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

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Garek Dyszel <garekdyszel@HIDDEN>; Keywords: patch; dated Wed, 5 Oct 2022 17:22:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 58310 <at> debbugs.gnu.org:


Received: (at 58310) by debbugs.gnu.org; 13 Nov 2022 18:54:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 13 13:54:21 2022
Received: from localhost ([127.0.0.1]:48356 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ouI7Z-0002si-FP
	for submit <at> debbugs.gnu.org; Sun, 13 Nov 2022 13:54:21 -0500
Received: from knopi.disroot.org ([178.21.23.139]:36664)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <garekdyszel@HIDDEN>) id 1ouI7X-0002sZ-8W
 for 58310 <at> debbugs.gnu.org; Sun, 13 Nov 2022 13:54:20 -0500
Received: from localhost (localhost [127.0.0.1])
 by disroot.org (Postfix) with ESMTP id 5DA464109F;
 Sun, 13 Nov 2022 19:54:17 +0100 (CET)
X-Virus-Scanned: SPAM Filter at disroot.org
Received: from knopi.disroot.org ([127.0.0.1])
 by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tsR6Dc4vqlPE; Sun, 13 Nov 2022 19:54:16 +0100 (CET)
From: Garek Dyszel <garekdyszel@HIDDEN>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail;
 t=1668365656; bh=7owb286lg1W+KRlDux9HwDBAsNVSSlcMbNEXDPRA1SA=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=TmC1ecQ4pjpLKHg2hGkOCIFQDO6auhAs9nGI39CBgUWaVE6IHzPV03vXbwMnFmtu2
 9Uc/01AV7xNH2cIuLos1ujvmL5tSABdr9rwONFy7L1uRNmLwRNx+1enRYUNiJJBqGe
 5w7R3+QW5gfWd2OfpceaefjR3V/fTiSkG0/9VcoVXsDxDmtAPPQJwTa00lHUWN1XdN
 AbgWPdJA9em0XBC0ZEYSMF+t9DpglxX97g9K5iZvhd2LWCIMud10TxxRhx96j/S1q2
 KPMaXMEvZb7SdXGChHbv3PLviRrgApaa9Eyt4gXASSq3xiLeTZw56FCbAC69glYr9E
 VnVQr6c6Rs66A==
To: Julien Lepiller <julien@HIDDEN>, zimoun <zimon.toutoune@HIDDEN>,
 58310 <at> debbugs.gnu.org
Subject: Re: [bug#58310] Manifest for coq-mathcomp-analysis
In-Reply-To: <20221113115303.66ccb071@HIDDEN>
References: <87h70iqji2.fsf@HIDDEN>
 <handler.58310.B.166499048624567.ack <at> debbugs.gnu.org>
 <87v8njspi5.fsf@HIDDEN>
 <A2D9782B-4542-4403-B078-51C3A2BD7640@HIDDEN>
 <20221113115303.66ccb071@HIDDEN>
Date: Sun, 13 Nov 2022 13:54:03 -0500
Message-ID: <87tu32eldg.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 58310
Cc: pukkamustard <pukkamustard@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

I'm in UTC-0400, so your first email arrived in my inbox at around
04:00. Sorry I didn't see these!

At 10:17 2022-11-13 UTC+0100, Julien Lepiller wrote:
>> I tried building your file (it's technically not a manifest) and
>> indeed it's failing in the chack-findlib-path.

You're right that it's not a manifest. I had put a (packages->manifest)
invocation at the end of the file to see why coq-elpi wasn't building.
Later I just threw a package at the end when testing it later, and
forgot that the file then became a package file.

>> Why do you want to run it?

I knew that ocamlfind wasn't able to find the file coq-elpi.elpi when
building coq-mathcomp-hierarchy-builder. I was trying to test for the
presence of that file...

>> There's no way it could work at this point, right after the check
>> phase, since the package is not even installed yet.

...and I thought that the phase 'check' came after the phase 'install'
for some reason :/

>> Also, the OCAMLPATH that would allow findlib to find it is not set to
>> the outputs, only to the inputs.

Looks like I'll need to take a closer look at ocaml-build-system!

At 11:53 2022-11-13 UTC+0100, Julien Lepiller wrote:
> So, I've had a further look at the sources for the failing packages
> and figured that some variables were missing in the make-flags.

Tweaking the make-flags is exactly what's been occupying my time for the
last few months off and on, yep :)

> Attached is the fixed version of your file that builds
> coq-mathcomp-analysis.

Wow! Thanks so much! I can finally move to using it instead of building
it, although trying to get it to build was still a lot of fun :)

> Note that the build of mathcomp-analysis is
> very quiet and takes a long time, but it works eventually.

For anybody else who might be reading this thread, it took about 12
minutes to build on my system. I ran 'guix gc' beforehand to get an
accurate number:
$ until guix gc && time guix build -Kf coq-mathcomp-analysis.scm;\
$ do sleep 0.1; done
...

real	11m18.769s
user	0m7.332s
sys	0m0.490s

Out of curiosity, where did you put the patch file so that (patches
(search-patches "ocaml-elpi-fix-yojson.patch")) worked? My system throws
this error, so I had to switch the patch's path back: "guix build:
error: ocaml-elpi-fix-yojson.patch: patch not found".





Information forwarded to guix-patches@HIDDEN:
bug#58310; Package guix-patches. Full text available.

Message received at 58310 <at> debbugs.gnu.org:


Received: (at 58310) by debbugs.gnu.org; 13 Nov 2022 10:53:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 13 05:53:13 2022
Received: from localhost ([127.0.0.1]:50143 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ouAbv-0006DY-DA
	for submit <at> debbugs.gnu.org; Sun, 13 Nov 2022 05:53:13 -0500
Received: from lepiller.eu ([89.234.186.109]:52356)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1ouAbr-0006DN-Fx
 for 58310 <at> debbugs.gnu.org; Sun, 13 Nov 2022 05:53:09 -0500
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 8e22513e;
 Sun, 13 Nov 2022 10:53:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type; s=dkim; bh=zNKTkLYwymzgcLGWfjpkKqJWP/+TGKKLnP4bLQ
 OR2uA=; b=IMBfajCtl4MttgLcgjZ18wR4y6Bgza9JY51X2hfxvB2hdgxRL84axw
 kWdcoGYe2x6joveUsvVDOi2go7POC23PobQl5oiXD3Yavozj9oyoKCIBTBJ2qzv5
 vJPW7vOH/Eml83CBuktTMU4SI0U4zgox40qhyRvpB0dJ8syP8NE/yb4W6ZsnJPOQ
 iT/aP5Jg2ympvHv+oCuxD4+TwRyw5v/vfkdYYKDYajQ2Ze0/H42h7f4PCjOTXM0m
 5fn3uSrB4Gx1gsDYZNmld15cK7TkFL3le/Rui91X2yA5ADkyAniiTJxMgzoas6iQ
 2OWhzhlNIpn/rEqDzDhrS6kfyO9pmO5Q==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 0f3d1e8f
 (TLSv1.3:AEAD-AES256-GCM-SHA384:256:NO); 
 Sun, 13 Nov 2022 10:53:04 +0000 (UTC)
Date: Sun, 13 Nov 2022 11:53:03 +0100
From: Julien Lepiller <julien@HIDDEN>
To: Garek Dyszel <garekdyszel@HIDDEN>, zimoun
 <zimon.toutoune@HIDDEN>, 58310 <at> debbugs.gnu.org
Subject: Re: [bug#58310] Manifest for coq-mathcomp-analysis
Message-ID: <20221113115303.66ccb071@HIDDEN>
In-Reply-To: <A2D9782B-4542-4403-B078-51C3A2BD7640@HIDDEN>
References: <87h70iqji2.fsf@HIDDEN>
 <handler.58310.B.166499048624567.ack <at> debbugs.gnu.org>
 <87v8njspi5.fsf@HIDDEN>
 <A2D9782B-4542-4403-B078-51C3A2BD7640@HIDDEN>
X-Mailer: Claws Mail 4.1.1 (GTK 3.24.30; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_/uvRhSCMl/XdMwbzM4kqo_=n"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 58310
Cc: pukkamustard <pukkamustard@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--MP_/uvRhSCMl/XdMwbzM4kqo_=n
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

So, I've had a further look at the sources for the failing packages and
figured that some variables were missing in the make-flags. Attached is
the fixed version of your file that builds coq-mathcomp-analysis. Note
that the build of mathcomp-analysis is very quiet and takes a long time,
but it works eventually.

Le Sun, 13 Nov 2022 10:17:07 +0100,
Julien Lepiller <julien@HIDDEN> a =C3=A9crit :

> Hi!
>=20
> I tried building your file (it's technically not a manifest) and
> indeed it's failing in the chack-findlib-path.
>=20
> Why do you want to run it? There's no way it could work at this
> point, right after the check phase, since the package is not even
> installed yet. Also, the OCAMLPATH that would allow findlib to find
> it is not set to the outputs, only to the inputs.
>=20
> Le 13 novembre 2022 00:48:50 GMT+01:00, Garek Dyszel
> <garekdyszel@HIDDEN> a =C3=A9crit=C2=A0:
> >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?=20
> >
> >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.)
> > =20


--MP_/uvRhSCMl/XdMwbzM4kqo_=n
Content-Type: text/x-scheme
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=coq-mathcomp-analysis.scm

;; -*- mode: scheme; mode: guix-devel -*-
;;; Local Variables:
;;; sentence-end-double-space: t
;;; End:
;;; This module extends GNU=C2=A0Guix and is licensed under the same terms,=
 those
;;; of the GNU GPL version 3 or (at your option) any later version.
;;;
;;; Copyright =C2=A9 2022 Garek Dyszel

;; To build directly from this file, use the following command.
;; guix build --with-patch=3Docaml-elpi=3Dpatches/ocaml-elpi-fix-yojson.pat=
ch -Kf coq-mathcomp-analysis.scm

(define-module (coq-mathcomp-analysis)
  #:use-module (guix)
  #:use-module (guix git-download)
  #:use-module (guix download)
  #:use-module (guix packages)
  #:use-module (guix build-system gnu)
  #:use-module (guix build gnu-build-system)
  #:use-module (guix build-system dune)
  #:use-module (guix build-system ocaml)
  #:use-module (guix build-system pyproject)
  ;; #:use-module ((guix build utils) #:prefix utils:)
  #:use-module ((guix licenses)
                #:prefix license:)
  #:use-module ((gnu packages base)
                #:prefix base:)
  #:use-module (guix build utils)
  #:use-module (guix utils)
  #:use-module (guix profiles)
  #:use-module (gnu packages)
  #:use-module (gnu packages coq)
  #:use-module (gnu packages base)
  #:use-module (gnu packages ocaml)
  #:use-module (gnu packages time)
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages python-build)
  #:use-module (gnu packages python-web)
  #:use-module (gnu packages python-crypto)
  #:use-module (gnu packages xdisorg)
  #:use-module (guix build-system python)
  #:use-module (gnu packages python-check)
  #:use-module (gnu packages check)
  #:use-module (gnu packages java)
  #:use-module (gnu packages python-compression)
  #:use-module (gnu packages lua)
  #:use-module (gnu packages version-control))

;;; Python
(define-public python-pprintpp
  ;; Git version tags are inaccurate for this package; use the
  ;; bare commit.
  (let ((commit "7ede6da1f3062bbfb32ee04353d675a5bff185e0")
        (revision "1"))
    (package
      (name "python-pprintpp")
      (version (git-version "0.3.0" revision commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/wolever/pprintpp")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "0nk935m3ig8sc32laqbh698vwpk037yw27gd3nvwwzdv42jal2li"))))
      (inputs (list python-pypa-build python-hypothesis python-wheel
                    python-parameterized))
      (native-inputs (list python-pytest python-nose))
      (build-system pyproject-build-system)
      (arguments
       (list #:phases #~(modify-phases %standard-phases
                          (replace 'build
                            (lambda _
                              (setenv "SOURCE_DATE_EPOCH" "315532800")
                              (invoke "python"
                                      "-m"
                                      "build"
                                      "--wheel"
                                      "--no-isolation"
                                      ".")))
                          (replace 'install
                            (lambda* (#:key outputs #:allow-other-keys)
                              (let ((whl (car (find-files "dist" "\\.whl$")=
)))
                                (invoke "pip"
                                        "--no-cache-dir"
                                        "--no-input"
                                        "install"
                                        "--no-deps"
                                        "--prefix"
                                        #$output
                                        whl))))
                          (replace 'check
                            (lambda* (#:key tests? #:allow-other-keys)
                              (when tests?
                                (invoke "python" "test.py")))))))
      (home-page "https://github.com/wolever/pprintpp")
      (synopsis "Python pretty-printer")
      (description
       "This package is a printer for Python which pretty-prints structures.
It also attempts to print Unicode characters without escaping them.")
      (license license:bsd-3))))

(define-public python-pluggy-1.0
  (package
    (inherit python-pluggy)
    (name "python-pluggy")
    (version "1.0.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "pluggy" version))
              (sha256
               (base32
                "0n8iadlas2z1b4h0fc73b043c7iwfvx9rgvqm1azjmffmhxkf922"))))
    (inputs (list python-pypa-build python-wheel))
    (native-inputs (list python-pytest python-setuptools-scm))))

(define-public python-setuptools-scm-7
  (package
    (inherit python-setuptools-scm)
    (version "7.0.5")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "setuptools_scm" version))
              (sha256
               (base32
                "0i28zghzdzzkm9w8rrjwphggkfs58nh6xnqsjhmqjvqxfypi67h3"))))
    (build-system pyproject-build-system)
    (arguments
     `( ;Disabled tests to avoid extra dependencies.
       #:tests? #f
       #:phases (modify-phases %standard-phases
                  ;; Disabled sanity check to avoid extra dependencies.
                  (delete 'sanity-check))))
    (propagated-inputs (list python-packaging-bootstrap python-tomli))))

(define-public python-pathspec-0.10.1
  (package
    (name "python-pathspec")
    (version "0.10.1")
    (source ;; (origin
     ;;   (method url-fetch)
     ;;   (uri (pypi-uri "pathspec" version))
     ;;   (sha256
     ;;    (base32
     ;;     "0g9jhhhf3zmrnvzvjjd2yhizsb6i93hmlszb09wixlr1nrhn3kks")))
     (origin
       (method git-fetch)
       (uri (git-reference
             (url
              "https://github.com/cpburnz/python-pathspec")
             (commit (string-append "v" version))))
       (sha256
        (base32 "0sgzh7ad1x098d0rln01f0qabpa7mnp26863isncbiyqsxh1gaxp"))))
    (build-system pyproject-build-system)
    (home-page "https://github.com/cpburnz/python-pathspec")
    (synopsis
     "Utility library for gitignore style pattern matching of file paths.")
    (description
     "Utility library for gitignore style pattern matching of file paths.")
    (license license:mpl2.0)))

;; This depends on packages in python-xyz.scm:
;; python-version, python-importlib-metadata, python-pathspec,
;; python-pluggy-1.0, and python-platformdirs.
(define-public python-hatchling
  (package
    (name "python-hatchling")
    (version "1.10.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/pypa/hatch")
                    (commit (string-append "hatchling-v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0ahx62w711a2vnb91ahqxrw8yi0gq0kfch3fk6akzngd13376czj"))))
    ;; python-pypa-build needed for bootstrapping.
    ;; Otherwise we get a circular reference:
    ;; python-hatchling trying to build itself, without
    ;; first having hatchling installed.
    (inputs (list python-editables
                  python-packaging-bootstrap
                  ;; Below from python-xyz.scm, can be moved to python-buil=
d.scm
                  python-pathspec-0.10.1
                  ;; Below from python-xyz.scm, can be moved to python-buil=
d.scm
                  python-pluggy-1.0
                  python-tomli))
    (build-system pyproject-build-system)
    (arguments
     `( ;Tests depend on module python-hatch, which would result in circula=
r references
       #:tests? #f
       #:phases (modify-phases %standard-phases
                  (replace 'build
                    (lambda _
                      (chdir "backend")
                      ;; ZIP does not support timestamps before 1980.
                      (setenv "SOURCE_DATE_EPOCH" "315532800")
                      (invoke "python"
                              "-m"
                              "build"
                              "--wheel"
                              "--no-isolation"
                              ".")))
                  (replace 'install
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let ((whl (car (find-files "dist" "\\.whl$"))))
                        (invoke "pip"
                                "--no-cache-dir"
                                "--no-input"
                                "install"
                                "--no-deps"
                                "--prefix"
                                (assoc-ref %outputs "out")
                                whl)))))))
    (home-page "https://ofek.dev/projects/hatch/")
    (synopsis "Bootstrap binaries to build @code{python-hatch}")
    (description "Bootstrap binaries to build @code{python-hatch}")
    ;; MIT License
    (license license:expat)))

;; (define-public python-hatchling
;;     (package
;;     (name "python-hatchling")
;;     (version "1.10.0")
;;     (source (origin
;;               (method git-fetch)
;;               (uri (git-reference
;;                     (url "https://github.com/pypa/hatch")
;;                     (commit (string-append "hatchling-v" version))))
;;               (file-name (git-file-name name version))
;;               (sha256
;;                (base32
;;                 "0ahx62w711a2vnb91ahqxrw8yi0gq0kfch3fk6akzngd13376czj"))=
))
;;     (inputs (list python-editables
;;                   python-packaging-bootstrap
;;                   ;; Below from python-xyz.scm, can be moved to python-b=
uild.scm
;;                   python-pathspec-0.10.1
;;                   ;; Below from python-xyz.scm, can be moved to python-b=
uild.scm
;;                   python-pluggy-1.0
;;                   python-tomli
;;                   python-hatchling-bootstrap))
;;     (build-system pyproject-build-system)
;;     (arguments
;;      `( ;Tests depend on module python-hatch, which this
;;        ;; is bootstrapping.
;;        #:tests? #f
;;        #:phases (modify-phases %standard-phases
;;                   (replace 'build
;;                     (lambda _
;;                       (chdir "backend")
;;                       ;; ZIP does not support timestamps before 1980.
;;                       (setenv "SOURCE_DATE_EPOCH" "315532800")
;;                       (invoke "python"
;;                               "-m"
;;                               "build"
;;                               "--wheel"
;;                               "--no-isolation"
;;                               ".")))
;;                   (replace 'install
;;                     (lambda* (#:key outputs #:allow-other-keys)
;;                       (let ((whl (car (find-files "dist" "\\.whl$"))))
;;                         (invoke "pip"
;;                                 "--no-cache-dir"
;;                                 "--no-input"
;;                                 "install"
;;                                 "--no-deps"
;;                                 "--prefix"
;;                                 (assoc-ref %outputs "out")
;;                                 whl)))))))
;;     (home-page "https://ofek.dev/projects/hatch/")
;;     (synopsis "Bootstrap binaries to build @code{python-hatch}")
;;     (description "Bootstrap binaries to build @code{python-hatch}")
;;     ;; MIT License
;;     (license license:expat)))

(define-public python-hatch
  (package
    (name "python-hatch")
    (version "1.6.2") ;; at minimum 1.5.0
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/pypa/hatch")
                    (commit (string-append "hatch-v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0if5ssp6vlfvna1jcvap40r0f7pm45h7kbia78h5ivm17vb8p08b"
                ;;"030yi9hw50mn899pq073lw2a55r57skl2g9agjp3b4l95f3nay30"
                ))))
    (inputs (list python-pypa-build
                  python-editables
                  python-importlib-metadata
                  python-version
                  python-packaging-next
                  python-pathspec
                  python-pluggy-1.0 ;TODO: Not detected by pytest?
                  python-hatchling
                  python-tomli
                  python-platformdirs
                  python-rich
                  python-tomli-w))
    (build-system pyproject-build-system)
    (arguments
     `( ;Tests appear to be written such that the input python-pluggy-1.0 is
       ;; not detected.
       #:tests? #f
       #:phases (modify-phases %standard-phases
                  (replace 'build
                    (lambda _
                      ;; ZIP does not support timestamps before 1980.
                      (setenv "SOURCE_DATE_EPOCH" "315532800")
                      (invoke "hatchling" "build")))
                  (replace 'install
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let ((whl (car (find-files "dist" "\\.whl$"))))
                        (invoke "pip"
                                "--no-cache-dir"
                                "--no-input"
                                "install"
                                "--no-deps"
                                "--prefix"
                                (assoc-ref %outputs "out")
                                whl))))
                  (replace 'check
                    (lambda* (#:key tests? #:allow-other-keys)
                      (when tests?
                        (chdir "tests")
                        (invoke "pytest" "-vv"))))
                  ;; Can't have hatch as a requirement of itself.
                  (delete 'sanity-check))))
    (home-page "https://ofek.dev/projects/hatch/")
    (synopsis "Python build system with project generation")
    (description
     "Python build system with project generation.  It also defines a speci=
fic
syntax in @code{toml} files to check for dependencies.")
    ;; MIT License
    (license license:expat)))

(define-public python-hatch-vcs
  ;; Tags are not accurate; just use the commit itself.
  (let ((commit "367daedb23ba906f3e0714c64392fdd6ffa69ab2")
        (revision "1"))
    (package
      (name "python-hatch-vcs")
      (version (git-version "0.2.0" revision commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/ofek/hatch-vcs")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "0nlnv32jqiz8ikc013h5simmiqqg0qa7pm0qcbd8yiqq1p43iw05"))))
      (build-system pyproject-build-system)
      (inputs (list python-pypa-build
                    python-pathspec-0.10.1
                    python-pluggy-1.0
                    python-editables
                    git
                    python-hatchling
                    ;; python-hatch
                    python-typing-extensions))
      (native-inputs (list python-pytest
                           ;; python-setuptools-scm-6.4 minimum
                           python-setuptools-scm-7))
      ;; (arguments
      ;;  (list #:phases #~(modify-phases %standard-phases
      ;;                     (replace 'build
      ;;                       (lambda _
      ;;                         (setenv "SOURCE_DATE_EPOCH" "315532800")
      ;;                         (invoke "python"
      ;;                                 "-m"
      ;;                                 "build"
      ;;                                 "--wheel"
      ;;                                 "--no-isolation"
      ;;                                 ".")))
      ;;                     (replace 'install
      ;;                       (lambda* (#:key outputs #:allow-other-keys)
      ;;                         (let ((whl (car (find-files "dist" "\\.whl=
$"))))
      ;;                           (invoke "pip"
      ;;                                   "--no-cache-dir"
      ;;                                   "--no-input"
      ;;                                   "install"
      ;;                                   "--no-deps"
      ;;                                   "--prefix"
      ;;                                   #$output
      ;;                                   whl))))
      ;;                     (replace 'check
      ;;                       (lambda* (#:key tests? #:allow-other-keys)
      ;;                         (when tests?
      ;;                           (invoke "pytest" "-vvv"))))))) ;)
      (arguments
     `( ;Tests depend on module python-hatch, which this
       ;; is bootstrapping.
       #:tests? #f
       #:phases (modify-phases %standard-phases
                  (replace 'build
                    (lambda _
                      ;;(chdir "backend")
                      ;; ZIP does not support timestamps before 1980.
                      (setenv "SOURCE_DATE_EPOCH" "315532800")
                      (invoke "python"
                              "-m"
                              "build"
                              "--wheel"
                              "--no-isolation"
                              ".")))
                  (replace 'install
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let ((whl (car (find-files "dist" "\\.whl$"))))
                        (invoke "pip"
                                "--no-cache-dir"
                                "--no-input"
                                "install"
                                "--no-deps"
                                "--prefix"
                                (assoc-ref %outputs "out")
                                whl)))))))
      (home-page "https://ofek.dev/projects/hatch/")
      (synopsis "Plugin for @code{python-hatch} to include versions")
      (description
       "This plugin defines a version-control syntax for use with
@code{toml} files intended for use with @code{python-hatch}.")
      ;; MIT License
      (license license:expat))))

(define-public python-pytest-icdiff
  (package
    (name "python-pytest-icdiff")
    (version "0.6")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "pytest-icdiff" version))
              (sha256
               (base32
                "1b8vzn2hvv6x25w1s446q1rfsbdik617lzpal3qb94x8a12yzwg8"))))
    (build-system pyproject-build-system)
    (propagated-inputs (list python-pypa-build python-icdiff python-pprintpp
                             python-pluggy-1.0))
    (native-inputs (list python-pytest))
    (arguments
     `(;; Tests fail with "collecting ... collected 0 items"
       #:tests? #f))
    ;; (arguments
    ;;  `(#:phases
    ;;    (modify-phases %standard-phases
    ;;      (add-before 'check 'chdir-to-test-dir
    ;;        (chdir "tests")))))
    (home-page "https://github.com/hjwp/pytest-icdiff")
    (synopsis "Colored diffs using @code{python-icdiff} for pytest output")
    (description
     "This package uses @code{python-icdiff} to add color to the output of
pytest assertions.")
    (license (license:non-copyleft "LICENSE"))))

(define-public python-hatch-fancy-pypi-readme
  (package
    (name "python-hatch-fancy-pypi-readme")
    (version "22.8.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "hatch_fancy_pypi_readme" version))
              (sha256
               (base32
                ;; PyPI hash problem
                ;;"1ykfz1sbz58xbjw5k9xpmn5r6ji16w8vag47j8f969bqy3w52ikx"
                "0sn2wsfbpsbf2mqhjvw62h1cfy5mz3d7iqyqvs5c20cnl0n2i4fs"))))
    (build-system pyproject-build-system)
    (propagated-inputs (list python-tomli python-typing-extensions))
    (native-inputs (list python-pypa-build
                         python-pathspec-0.10.1
                         python-pluggy-1.0
                         python-editables
                         python-hatchling
                         python-wheel
                         python-pytest
                         python-pytest-icdiff))
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (add-before 'build 'disable-broken-tests
                    (lambda _
                      ;; Skip the tests for "building". Guix already does t=
his,
                      ;; so we don't need to test it for this package.
                      (chdir "tests")
                      (invoke "sed" "-i"
                              "11ipytest.skip('No need to test\
 building; guix does this already', allow_module_level=3DTrue)"
                              "test_end_to_end.py")
                      (chdir "../")))
                  ;; XXX: PEP 517 manual build/install procedures copied fr=
om
                  ;; python-isort.
                  (replace 'build
                    (lambda _
                      ;; ZIP does not support timestamps before 1980.
                      (setenv "SOURCE_DATE_EPOCH" "315532800")
                      (invoke "python"
                              "-m"
                              "build"
                              "--wheel"
                              "--no-isolation"
                              ".")))
                  (replace 'install
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let ((whl (car (find-files "dist" "\\.whl$"))))
                        (invoke "pip"
                                "--no-cache-dir"
                                "--no-input"
                                "install"
                                "--no-deps"
                                "--prefix"
                                (assoc-ref %outputs "out")
                                whl))))
                  (replace 'check
                    (lambda* (#:key tests? #:allow-other-keys)
                      (when tests?
                        (invoke "pytest" "-vv")))))))
    (home-page
     "https://github.com/hynek/hatch-fancy-pypi-readme")
    (synopsis "Syntax for styling PyPI READMEs")
    (description
     "Defines a syntax for the python-hatch build system, intended for styl=
ing
READMEs for PyPI.")
    ;; MIT License
    (license license:expat)))

;; Has to be done manually. DO NOT copy and paste this one.
(define-public python-jsonschema-4.15
  (package
    (inherit python-jsonschema-next)
    (version "4.16.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "jsonschema" version))
              (sha256
               (base32
                ;; PyPI hashing problem
                "08sbw5fn19vn8x7c216gkczyzd575702yx2vmqdrgxpgfvq5jl0n"
                ;;"07pyh8g4csapkfjgjww7vkxwvh1qwxwqxz82wm2b1kmxj69rgx11"
                ))))
    (native-inputs (list python-pypa-build
                         python-twisted
                         python-hatch
                         python-hatchling
                         python-pathspec-0.10.1
                         python-pluggy-1.0
                         python-editables
                         python-hatch-vcs
                         python-setuptools-scm-7
                         python-hatch-fancy-pypi-readme))
    (propagated-inputs (list python-attrs
                             python-importlib-metadata
                             python-pyrsistent
                             python-typing-extensions
                             python-hatch-vcs))
    (home-page "https://github.com/python-jsonschema/jsonschema")))

;;; OCaml
;; Requires python-jsonschema with version at minimum 4.6.0 to run
;; tests.=20
;; See https://github.com/ahrefs/atd/issues/306 for more info on that.
(define-public ocaml-atd
  (package
    (name "ocaml-atd")
    (version "2.10.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/ahrefs/atd")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "10fgahdigrl01py0k0q2d6a60yps38q96dxhjnzm9jz4g931716l"))))
    (build-system dune-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (replace 'check
                    (lambda* (#:key tests? #:allow-other-keys)
                      ;; The dune-build-system does not run "make test" but
                      ;; "dune runtest test --release".
                      ;; This project, rather, needs us to run "make test".
                      ;;
                      ;; For this package (ocaml-atd), we DO NOT run all the
                      ;; tests. The atd repository has resources for several
                      ;; different interfaces (python, scala, etc), but we
                      ;; don't need to run those tests if we are just
                      ;; interested in the ocaml interface.
                      ;; So we stick with just the ocaml tests here.
                      (when tests?
                        (invoke "make" "test-ocaml")))))))
    (propagated-inputs (list ocaml-menhir
                             ocaml-easy-format
                             ocaml-odoc
                             ocaml-re
                             ocaml-camlp-streams
                             ocaml-biniou
                             ocaml-yojson
                             ocaml-cmdliner))
    (native-inputs (list ocaml-alcotest
                         python-pypa-build
                         python-jsonschema-4.15
                         python-flake8
                         python-mypy
                         python-pytest))
    (inputs (list python))
    (home-page "https://github.com/ahrefs/atd")
    (synopsis "Parser for the ATD data format description language")
    (description
     "ATD is an OCaml library providing a parser for the Adjustable Type
Definitions language.")
    ;; Modified BSD license
    (license (license:non-copyleft "LICENSE.md"))))

(define-public ocaml-elpi
  (package
    (name "ocaml-elpi")
    ;; For more information on which version works with Coq 8.16,
    ;; see the relevant issue:
    ;; https://github.com/math-comp/hierarchy-builder/issues/297
    ;; Here we use
    ;; coq-elpi 1.15.4 + ocaml-elpi 1.16.5 +
    ;; coq-mathcomp-hierarchy-builder 1.3.0 (Coq 8.16).
    ;; (version "1.15.2")
    ;;(version "1.16.5")
    (version "1.16.7")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/LPCIC/elpi")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                ;; for 1.16.5
                ;;"1l6grpglkvyyj0p01l0q5ih12lp4vizamgj7i63ig82gqpyzk9dl"
                ;; for the version that the patch is based on (1.16.7)
                "1i0731f7jj48zvkla959pffj5l0qynmfyxljgszc6z3b4lpni1xc"))
              ;; Fix incompatibility with ocaml-yojson@HIDDEN
              ;; See <https://github.com/LPCIC/elpi/pull/167>.
              (patches (search-patches "ocaml-elpi-fix-yojson.patch"))
              ;(patches '("/home/chips/home/code/guix_packages/built/patche=
s/ocaml-elpi-fix-yojson.patch"))
              ))
    (build-system dune-build-system)
    (arguments
     `(#:test-target "tests"))
     ;; Build currently fails with error (repeated several times):
     ;; 'Warning 6 [labels-omitted: label argsdepth was omitted in the
    ;; application of this function.'
    (propagated-inputs (list ocaml-stdlib-shims
                             ocaml-ppxlib
                             ocaml-menhir
                             ocaml-re
                             ocaml-ppx-deriving
                             ocaml-atd
                             ocaml-camlp-streams
                             ocaml-biniou
                             ocaml-yojson))
    (native-inputs (list ocaml-ansiterminal ocaml-cmdliner time))
    (home-page "https://github.com/LPCIC/elpi")
    (synopsis "ELPI - Embeddable =CE=BBProlog Interpreter")
    (description
     "ELPI is an extension language for OCaml.  It implements a variant of
=CE=BBProlog enriched with Constraint Handling Rules, a programming languag=
e for
manipulating syntax trees with binders.

This package provides both a command line interpreter, elpi, and an OCaml
library with the same name.")
    (license license:lgpl2.1+)))

;;; Coq
(define-public coq-elpi
  (package
    (name "coq-elpi")
    (version "1.16.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/LPCIC/coq-elpi")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "18w899fcz4kzx7zyr7a0g4avclbm5f82g7kh76b9fy2s99jz6q5c"))))
    ;;(build-system gnu-build-system)
    (build-system ocaml-build-system)
    (propagated-inputs (list coq-core ocaml-elpi ocaml-zarith))
    (inputs (list python lua-5.1 coq-core coq-stdlib))=20
    (arguments
     `(#:test-target "test"
       ;; From the repo: "COQBIN=3D%{bin}%/" "ELPIDIR=3D%{prefix}%/lib/elpi=
" "OCAMLWARN=3D"
       #:make-flags ,#~(list (string-append "COQBIN=3D"
                                            #$(this-package-input "coq-core=
")
                                            "/bin/")
                             (string-append "ELPIDIR=3D"
                                            #$(this-package-input "ocaml-el=
pi")
                                            "/lib/ocaml/site-lib/elpi")
                             (string-append "COQLIBINSTALL=3D"
                                            #$output
                                            "/lib/coq/user-contrib")
                             (string-append "COQMF_COQLIB=3D"
                                            #$output
                                            "/lib/ocaml/site-lib/coq")
                             (string-append "COQPLUGININSTALL=3D"
                                            #$output
                                            "/lib/ocaml/site-lib")
                             "OCAMLWARN=3D")
       #:phases (modify-phases %standard-phases
                  (delete 'configure)
                  #;(add-after 'check 'check-findlib-path
                    (lambda _
                      (invoke "ocamlfind" "query" "coq-elpi"))))))
    (home-page "https://github.com/LPCIC/coq-elpi")
    (synopsis "Elpi extension language for Coq")
    (description
     "Coq-elpi provides a Coq plugin that embeds ELPI, an extension language
for OCaml that is an implementation of =CE=BBProlog.  It also provides a wa=
y to
embed Coq's terms into =CE=BBProlog using the Higher-Order Abstract Syntax =
approach
and a way to read terms back.  In addition to that it exports to ELPI a set=
 of
Coq's primitives.  Finally it provides a way to define new vernacular comma=
nds
and new tactics.")
    (license license:lgpl2.1)))

(define-public coq-mathcomp-hierarchy-builder
  (package
    (name "coq-mathcomp-hierarchy-builder")
    ;; For more information on which version works with Coq 8.16,
    ;; see the relevant issue:
    ;; https://github.com/math-comp/hierarchy-builder/issues/297
    ;; Here we use
    ;; coq-elpi 1.15.4 + ocaml-elpi 1.16.5 +
    ;; coq-mathcomp-hierarchy-builder 1.3.0 (Coq 8.16)
    ;;(version "1.3.0")
    (version "1.4.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/math-comp/hierarchy-builder")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                ;; 1.3.0
                ;;"17k7rlxdx43qda6i1yafpgc64na8br285cb0mbxy5wryafcdrkrc"
                ;; 1.4.0
                "1g7narbx5n8bbnnnn8kmgk62clah9fsy9jb154xcr41p8psrvrxl"))))
    ;;(build-system ocaml-build-system) ;; fails for same reason as dune.
    (build-system gnu-build-system)
    (arguments
     `(#:make-flags ,#~(list (string-append "ELPIDIR=3D"
                                            #$(this-package-input "coq-elpi=
")
                                            "/lib/coq/user-contrib/elpi/")
                             (string-append "DESTDIR=3D"
                                            (assoc-ref %outputs "out"))
                             (string-append "COQLIBINSTALL=3D"
                                            #$output
                                            "/lib/coq/user-contrib"))
       #:test-target "test-suite"
       #:phases (modify-phases %standard-phases
                  (delete 'configure)
                  )))
    (propagated-inputs (list coq-elpi))
    (inputs (list coq-core
                  coq-stdlib))
    (native-inputs (list ocaml which))
    (synopsis "Hierarchy structures for the Coq proof assistant")
    (description
     "Hierarchy Builder (HB) provides high level commands to declare a
hierarchy of interfaces for the Coq system.

Given a structure one can develop its theory, and that theory becomes
applicable to all examples of the structure.  One can also declare alternat=
ive
interfaces, for convenience or backward compatibility, and provide glue code
linking these interfaces to the structures part of the hierarchy.")
    (home-page "https://math-comp.github.io/")
    ;; MIT license
    (license license:expat)))

(define-public coq-mathcomp-analysis
  (package
    (name "coq-mathcomp-analysis")
    (version "0.5.4")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/math-comp/analysis")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1l1yaxbmqr4li8x7g51q98a6v383dnf94lw1b74ccpwqz9qybz9m"))))
    (build-system gnu-build-system)
    (arguments
     `( ;No rule to make target 'check'. Stop.
       ;; Makefile.common has no references to tests.
       ;; There are also no references to tests found after
       ;; running the following commands in the top
       ;; directory of the cloned repo:
       ;; find -type d | grep -i test
       ;; rg test # where rg is ripgrep
       ;; Checking the git log, we find: "Add test suite for
       ;; joins and several fixes".
       ;;
       ;; If tests are included, this quote suggests that they
       ;; would be part of the source files themselves,
       ;; and the tests would be run as part of the build
       ;; process.
       #:tests? #f
       #:make-flags ,#~(list (string-append "COQBIN=3D"
                                            #$(this-package-input "coq-core=
")
                                            "/bin/")
                             (string-append "COQBININSTALL=3D"
                                            (assoc-ref %outputs "out") "/bi=
n/")
                             (string-append "COQMF_COQLIB=3D"
                                            (assoc-ref %outputs "out")
                                            "/lib/ocaml/site-lib/coq")
                             (string-append "COQLIBINSTALL=3D"
                                            (assoc-ref %outputs "out")
                                            "/lib/coq/user-contrib"))
       #:phases (modify-phases %standard-phases
                  (delete 'configure)
                  (replace 'build
                    (lambda* (#:key make-flags #:allow-other-keys)
                      (apply invoke "make" "build" make-flags))))))
    (inputs (list coq
                  coq-stdlib
                  coq-mathcomp
                  coq-mathcomp-finmap
                  coq-mathcomp-hierarchy-builder
                  coq-elpi
                  coq-mathcomp-bigenough
                  coq-core))
    (native-inputs (list ocaml which))
    (synopsis "Real analysis for the Coq proof assistant")
    (description
     "This repository contains an experimental library for real analysis for
the Coq proof-assistant, using the Mathematical Components library.")
    (home-page "https://math-comp.github.io/")
    (license license:cecill-c)))

coq-mathcomp-analysis

--MP_/uvRhSCMl/XdMwbzM4kqo_=n--




Information forwarded to guix-patches@HIDDEN:
bug#58310; Package guix-patches. Full text available.

Message received at 58310 <at> debbugs.gnu.org:


Received: (at 58310) by debbugs.gnu.org; 13 Nov 2022 09:17:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 13 04:17:16 2022
Received: from localhost ([127.0.0.1]:50065 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ou975-0003o7-Or
	for submit <at> debbugs.gnu.org; Sun, 13 Nov 2022 04:17:16 -0500
Received: from lepiller.eu ([89.234.186.109]:36142)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1ou973-0003nv-19
 for 58310 <at> debbugs.gnu.org; Sun, 13 Nov 2022 04:17:14 -0500
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 1f3cc262;
 Sun, 13 Nov 2022 09:17:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:in-reply-to:references:message-id:mime-version
 :content-type:content-transfer-encoding; s=dkim; bh=J8pvBhghCTBa
 24YuOcA2hwXeCjP29Rpy25j19HpNMoY=; b=K2GvhwuDI/xW7v1H05cAWH2dWAkk
 XVHYUIac4oIu2Csj5g1Pi5Ha9Qk0ijR4+FzhsVaEvDTVeQOx7H+F2HV96EP7nb0Q
 nCQXt5jFGY7QSuLfKmtdKZAO80uzaET7UcX/rg4w4ubrRagPwzYSeIwgwtieGN6v
 y6BtYDOsNeQdQtLAkb/rrtkwvvXZQAb+fU7TZYyGc3KDMXh1LwAgxJjan16nl+4K
 cDxnSjHylH7JWryXNqsLZSe5TvXv7tnpRtXuDvB26I7ze2N0nxCHlWfCOVjEW8gc
 ERjfB1Krx26LVGmW2908ubML7Th0D9Bk90BVon7rxBUcJ8G/1BAYCz2p/g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 5db1b513
 (TLSv1.3:AEAD-AES256-GCM-SHA384:256:NO); 
 Sun, 13 Nov 2022 09:17:10 +0000 (UTC)
Date: Sun, 13 Nov 2022 10:17:07 +0100
From: Julien Lepiller <julien@HIDDEN>
To: Garek Dyszel <garekdyszel@HIDDEN>, zimoun <zimon.toutoune@HIDDEN>, 
 58310 <at> debbugs.gnu.org
Subject: Re: Manifest for coq-mathcomp-analysis
User-Agent: K-9 Mail for Android
In-Reply-To: <87v8njspi5.fsf@HIDDEN>
References: <87h70iqji2.fsf@HIDDEN>
 <handler.58310.B.166499048624567.ack <at> debbugs.gnu.org>
 <87v8njspi5.fsf@HIDDEN>
Message-ID: <A2D9782B-4542-4403-B078-51C3A2BD7640@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary=----VEXPOYMVGO9M0GJPBXQXP1DBARXM2G
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 58310
Cc: pukkamustard <pukkamustard@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

------VEXPOYMVGO9M0GJPBXQXP1DBARXM2G
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi!

I tried building your file (it's technically not a manifest) and indeed it=
's failing in the chack-findlib-path=2E

Why do you want to run it? There's no way it could work at this point, rig=
ht after the check phase, since the package is not even installed yet=2E Al=
so, the OCAMLPATH that would allow findlib to find it is not set to the out=
puts, only to the inputs=2E

Le 13 novembre 2022 00:48:50 GMT+01:00, Garek Dyszel <garekdyszel@disroot=
=2Eorg> a =C3=A9crit=C2=A0:
>Hi,
>
>CC: ocaml team
>
>I am including a manifest file instead of sending patches for now=2E It
>seems like a good idea to stick with that until these packages are ready
>to be put into the Guix source tree=2E I'm refactoring them too often=2E
>
>After opening an issue on Github [1] [2], it seems that coq-elpi is the
>package that is not building properly=2E It is clear that ocamlfind (from
>ocaml-findlib) can't find coq-elpi after coq-elpi's install phase=2E
>[1]: https://github=2Ecom/math-comp/hierarchy-builder/issues/320
>[2]: https://github=2Ecom/LPCIC/coq-elpi/issues/384
>
>It looks like the META file is not being installed by coq-elpi either=2E
>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)=2E
>
>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=2E
>
>The later package coq-mathcomp-hierarchy-builder runs ocamlfind to find
>coq-elpi, too=2E
>
>What would be a way to ensure that coq-elpi is found by ocamlfind?=20
>
>Thanks!
>Garek
>
>(Manifest attached with an ocaml-elpi patch=2E You will need to change th=
e path for
>the ocaml-elpi (patches) field to match your directory structure, but oth=
erwise
>this manifest should work=2E)
>

------VEXPOYMVGO9M0GJPBXQXP1DBARXM2G
Content-Type: text/html;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body>Hi!<br><br>I tried building your file (it's techni=
cally not a manifest) and indeed it's failing in the chack-findlib-path=2E<=
br><br>Why do you want to run it? There's no way it could work at this poin=
t, right after the check phase, since the package is not even installed yet=
=2E Also, the OCAMLPATH that would allow findlib to find it is not set to t=
he outputs, only to the inputs=2E<br><br><div class=3D"gmail_quote">Le 13 n=
ovembre 2022 00:48:50 GMT+01:00, Garek Dyszel &lt;garekdyszel@disroot=2Eorg=
&gt; a =C3=A9crit=C2=A0:<blockquote class=3D"gmail_quote" style=3D"margin: =
0pt 0pt 0pt 0=2E8ex; border-left: 1px solid rgb(204, 204, 204); padding-lef=
t: 1ex;">
<pre dir=3D"auto" class=3D"k9mail">Hi,<br><br>CC: ocaml team<br><br>I am i=
ncluding a manifest file instead of sending patches for now=2E It<br>seems =
like a good idea to stick with that until these packages are ready<br>to be=
 put into the Guix source tree=2E I'm refactoring them too often=2E<br><br>=
After opening an issue on Github [1] [2], it seems that coq-elpi is the<br>=
package that is not building properly=2E It is clear that ocamlfind (from<b=
r>ocaml-findlib) can't find coq-elpi after coq-elpi's install phase=2E<br>[=
1]: <a href=3D"https://github=2Ecom/math-comp/hierarchy-builder/issues/320"=
>https://github=2Ecom/math-comp/hierarchy-builder/issues/320</a><br>[2]: <a=
 href=3D"https://github=2Ecom/LPCIC/coq-elpi/issues/384">https://github=2Ec=
om/LPCIC/coq-elpi/issues/384</a><br><br>It looks like the META file is not =
being installed by coq-elpi either=2E<br>I'm not sure whether that's releva=
nt, since ocamlfind couldn't find<br>coq-elpi even when META was present (i=
n a much older revision of this<br>manifest; I can dig for it but just toda=
y don't have time)=2E<br><br>The problem seems to be something in the build=
 process itself; if the<br>extra phase 'check-findlib-path' is omitted then=
 coq-elpi's build is<br>reported as a success=2E<br><br>The later package c=
oq-mathcomp-hierarchy-builder runs ocamlfind to find<br>coq-elpi, too=2E<br=
><br>What would be a way to ensure that coq-elpi is found by ocamlfind? <br=
><br>Thanks!<br>Garek<br><br>(Manifest attached with an ocaml-elpi patch=2E=
 You will need to change the path for<br>the ocaml-elpi (patches) field to =
match your directory structure, but otherwise<br>this manifest should work=
=2E)<br><br></pre></blockquote></div></body></html>
------VEXPOYMVGO9M0GJPBXQXP1DBARXM2G--




Information forwarded to guix-patches@HIDDEN:
bug#58310; Package guix-patches. Full text available.

Message received at 58310 <at> debbugs.gnu.org:


Received: (at 58310) by debbugs.gnu.org; 13 Nov 2022 08:28:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 13 03:28:07 2022
Received: from localhost ([127.0.0.1]:49997 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ou8LW-0002XJ-Jt
	for submit <at> debbugs.gnu.org; Sun, 13 Nov 2022 03:28:07 -0500
Received: from knopi.disroot.org ([178.21.23.139]:48714)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <garekdyszel@HIDDEN>) id 1ou0Fz-0001pn-G6
 for 58310 <at> debbugs.gnu.org; Sat, 12 Nov 2022 18:49:53 -0500
Received: from localhost (localhost [127.0.0.1])
 by disroot.org (Postfix) with ESMTP id 0F65E410CB;
 Sun, 13 Nov 2022 00:49:50 +0100 (CET)
X-Virus-Scanned: SPAM Filter at disroot.org
Received: from knopi.disroot.org ([127.0.0.1])
 by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 6u7rYSL7UNQD; Sun, 13 Nov 2022 00:49:36 +0100 (CET)
From: Garek Dyszel <garekdyszel@HIDDEN>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail;
 t=1668296975; bh=/sIBGRbV4cx1aQOQl/KhML0jDieMVDPykoWToKx6fmY=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=GqwOaq8kwnIBVNWUzf8S74a9XfooW7pxLg5GKaBwsRw6/xH1ZTvMnsEuOYxJO5u2m
 e9taFx5k+S+X/ukfRDdyDwxPn9mVZtyTgFNxCo4mcQ53oNuqOTTg7sNr/rHxR2gRH2
 IxF2xNExHEDT2N/rzXgC4c69AAeMZ+jR5uIyIbquIpw4cDCcCGmIt6CuoO/F0d0kac
 M0n4X39kNNxGUHNMwEDpUI15lltYsODR3Ca6FbFiaYWZ1rfkj7/nHXQYhCFziy7PFg
 KlqEaS+kqkKf2+OW+xTTjc8XdWBFXGR9ExuTTF1/Zh9Ep53+azb2LJTC37SQZ/z1vQ
 CFU57om0+aSEw==
To: zimoun <zimon.toutoune@HIDDEN>, 58310 <at> debbugs.gnu.org
Subject: Manifest for coq-mathcomp-analysis
In-Reply-To: <handler.58310.B.166499048624567.ack <at> debbugs.gnu.org>
References: <87h70iqji2.fsf@HIDDEN>
 <handler.58310.B.166499048624567.ack <at> debbugs.gnu.org>
Date: Sat, 12 Nov 2022 18:48:50 -0500
Message-ID: <87v8njspi5.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Debbugs-Envelope-To: 58310
X-Mailman-Approved-At: Sun, 13 Nov 2022 03:27:59 -0500
Cc: pukkamustard <pukkamustard@HIDDEN>,
 Julien Lepiller <julien@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--=-=-=
Content-Type: text/plain

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.)


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=coq-mathcomp-analysis.scm
Content-Transfer-Encoding: base64

OzsgLSotIG1vZGU6IHNjaGVtZTsgbW9kZTogZ3VpeC1kZXZlbCAtKi0KOzs7IExvY2FsIFZhcmlh
YmxlczoKOzs7IHNlbnRlbmNlLWVuZC1kb3VibGUtc3BhY2U6IHQKOzs7IEVuZDoKOzs7IFRoaXMg
bW9kdWxlIGV4dGVuZHMgR05VwqBHdWl4IGFuZCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgc2FtZSB0
ZXJtcywgdGhvc2UKOzs7IG9mIHRoZSBHTlUgR1BMIHZlcnNpb24gMyBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgo7OzsKOzs7IENvcHlyaWdodCDCqSAyMDIyIEdhcmVrIER5
c3plbAoKOzsgVG8gYnVpbGQgZGlyZWN0bHkgZnJvbSB0aGlzIGZpbGUsIHVzZSB0aGUgZm9sbG93
aW5nIGNvbW1hbmQuCjs7IGd1aXggYnVpbGQgLS13aXRoLXBhdGNoPW9jYW1sLWVscGk9cGF0Y2hl
cy9vY2FtbC1lbHBpLWZpeC15b2pzb24ucGF0Y2ggLUtmIGNvcS1tYXRoY29tcC1hbmFseXNpcy5z
Y20KCihkZWZpbmUtbW9kdWxlIChjb3EtbWF0aGNvbXAtYW5hbHlzaXMpCiAgIzp1c2UtbW9kdWxl
IChndWl4KQogICM6dXNlLW1vZHVsZSAoZ3VpeCBnaXQtZG93bmxvYWQpCiAgIzp1c2UtbW9kdWxl
IChndWl4IGRvd25sb2FkKQogICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKICAjOnVzZS1t
b2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdudSkKICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQg
Z251LWJ1aWxkLXN5c3RlbSkKICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGR1bmUp
CiAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBvY2FtbCkKICAjOnVzZS1tb2R1bGUg
KGd1aXggYnVpbGQtc3lzdGVtIHB5cHJvamVjdCkKICA7OyAjOnVzZS1tb2R1bGUgKChndWl4IGJ1
aWxkIHV0aWxzKSAjOnByZWZpeCB1dGlsczopCiAgIzp1c2UtbW9kdWxlICgoZ3VpeCBsaWNlbnNl
cykKICAgICAgICAgICAgICAgICM6cHJlZml4IGxpY2Vuc2U6KQogICM6dXNlLW1vZHVsZSAoKGdu
dSBwYWNrYWdlcyBiYXNlKQogICAgICAgICAgICAgICAgIzpwcmVmaXggYmFzZTopCiAgIzp1c2Ut
bW9kdWxlIChndWl4IGJ1aWxkIHV0aWxzKQogICM6dXNlLW1vZHVsZSAoZ3VpeCB1dGlscykKICAj
OnVzZS1tb2R1bGUgKGd1aXggcHJvZmlsZXMpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMp
CiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgY29xKQogICM6dXNlLW1vZHVsZSAoZ251IHBh
Y2thZ2VzIGJhc2UpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgb2NhbWwpCiAgIzp1c2Ut
bW9kdWxlIChnbnUgcGFja2FnZXMgdGltZSkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBw
eXRob24pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uLXh5eikKICAjOnVzZS1t
b2R1bGUgKGdudSBwYWNrYWdlcyBweXRob24tYnVpbGQpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFj
a2FnZXMgcHl0aG9uLXdlYikKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBweXRob24tY3J5
cHRvKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHhkaXNvcmcpCiAgIzp1c2UtbW9kdWxl
IChndWl4IGJ1aWxkLXN5c3RlbSBweXRob24pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMg
cHl0aG9uLWNoZWNrKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGNoZWNrKQogICM6dXNl
LW1vZHVsZSAoZ251IHBhY2thZ2VzIGphdmEpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMg
cHl0aG9uLWNvbXByZXNzaW9uKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGx1YSkKICAj
OnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB2ZXJzaW9uLWNvbnRyb2wpKQoKOzs7IFB5dGhvbgoo
ZGVmaW5lLXB1YmxpYyBweXRob24tcHByaW50cHAKICA7OyBHaXQgdmVyc2lvbiB0YWdzIGFyZSBp
bmFjY3VyYXRlIGZvciB0aGlzIHBhY2thZ2U7IHVzZSB0aGUKICA7OyBiYXJlIGNvbW1pdC4KICAo
bGV0ICgoY29tbWl0ICI3ZWRlNmRhMWYzMDYyYmJmYjMyZWUwNDM1M2Q2NzVhNWJmZjE4NWUwIikK
ICAgICAgICAocmV2aXNpb24gIjEiKSkKICAgIChwYWNrYWdlCiAgICAgIChuYW1lICJweXRob24t
cHByaW50cHAiKQogICAgICAodmVyc2lvbiAoZ2l0LXZlcnNpb24gIjAuMy4wIiByZXZpc2lvbiBj
b21taXQpKQogICAgICAoc291cmNlIChvcmlnaW4KICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0
LWZldGNoKQogICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQogICAgICAgICAgICAg
ICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRodWIuY29tL3dvbGV2ZXIvcHByaW50cHAiKQogICAg
ICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKICAgICAgICAgICAgICAgIChmaWxl
LW5hbWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkKICAgICAgICAgICAgICAgIChzaGEy
NTYKICAgICAgICAgICAgICAgICAoYmFzZTMyCiAgICAgICAgICAgICAgICAgICIwbms5MzVtM2ln
OHNjMzJsYXFiaDY5OHZ3cGswMzd5dzI3Z2QzbnZ3d3pkdjQyamFsMmxpIikpKSkKICAgICAgKGlu
cHV0cyAobGlzdCBweXRob24tcHlwYS1idWlsZCBweXRob24taHlwb3RoZXNpcyBweXRob24td2hl
ZWwKICAgICAgICAgICAgICAgICAgICBweXRob24tcGFyYW1ldGVyaXplZCkpCiAgICAgIChuYXRp
dmUtaW5wdXRzIChsaXN0IHB5dGhvbi1weXRlc3QgcHl0aG9uLW5vc2UpKQogICAgICAoYnVpbGQt
c3lzdGVtIHB5cHJvamVjdC1idWlsZC1zeXN0ZW0pCiAgICAgIChhcmd1bWVudHMKICAgICAgIChs
aXN0ICM6cGhhc2VzICN+KG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAg
ICAgICAgICAgICAgICAgIChyZXBsYWNlICdidWlsZAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGxhbWJkYSBfCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIlNPVVJD
RV9EQVRFX0VQT0NIIiAiMzE1NTMyODAwIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGludm9rZSAicHl0aG9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIt
bSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0td2hlZWwiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi0tbm8taXNvbGF0aW9uIgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIuIikpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBs
YWNlICdpbnN0YWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhKiAoIzprZXkg
b3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsZXQgKCh3aGwgKGNhciAoZmluZC1maWxlcyAiZGlzdCIgIlxcLndobCQiKSkpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChpbnZva2UgInBpcCIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICItLW5vLWNhY2hlLWRpciIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICItLW5vLWlucHV0IgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImluc3RhbGwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiLS1uby1kZXBzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi0tcHJlZml4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyRvdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdobCkpKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAnY2hlY2sKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsYW1iZGEqICgjOmtleSB0ZXN0cz8gIzphbGxvdy1vdGhlci1rZXlzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiB0ZXN0cz8KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW52b2tlICJweXRob24iICJ0ZXN0LnB5IikpKSkpKSkKICAgICAg
KGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL3dvbGV2ZXIvcHByaW50cHAiKQogICAgICAo
c3lub3BzaXMgIlB5dGhvbiBwcmV0dHktcHJpbnRlciIpCiAgICAgIChkZXNjcmlwdGlvbgogICAg
ICAgIlRoaXMgcGFja2FnZSBpcyBhIHByaW50ZXIgZm9yIFB5dGhvbiB3aGljaCBwcmV0dHktcHJp
bnRzIHN0cnVjdHVyZXMuCkl0IGFsc28gYXR0ZW1wdHMgdG8gcHJpbnQgVW5pY29kZSBjaGFyYWN0
ZXJzIHdpdGhvdXQgZXNjYXBpbmcgdGhlbS4iKQogICAgICAobGljZW5zZSBsaWNlbnNlOmJzZC0z
KSkpKQoKKGRlZmluZS1wdWJsaWMgcHl0aG9uLXBsdWdneS0xLjAKICAocGFja2FnZQogICAgKGlu
aGVyaXQgcHl0aG9uLXBsdWdneSkKICAgIChuYW1lICJweXRob24tcGx1Z2d5IikKICAgICh2ZXJz
aW9uICIxLjAuMCIpCiAgICAoc291cmNlIChvcmlnaW4KICAgICAgICAgICAgICAobWV0aG9kIHVy
bC1mZXRjaCkKICAgICAgICAgICAgICAodXJpIChweXBpLXVyaSAicGx1Z2d5IiB2ZXJzaW9uKSkK
ICAgICAgICAgICAgICAoc2hhMjU2CiAgICAgICAgICAgICAgIChiYXNlMzIKICAgICAgICAgICAg
ICAgICIwbjhpYWRsYXMyejFiNGgwZmM3M2IwNDNjN2l3ZnZ4OXJndnFtMWF6am1mZm1oeGtmOTIy
IikpKSkKICAgIChpbnB1dHMgKGxpc3QgcHl0aG9uLXB5cGEtYnVpbGQgcHl0aG9uLXdoZWVsKSkK
ICAgIChuYXRpdmUtaW5wdXRzIChsaXN0IHB5dGhvbi1weXRlc3QgcHl0aG9uLXNldHVwdG9vbHMt
c2NtKSkpKQoKKGRlZmluZS1wdWJsaWMgcHl0aG9uLXNldHVwdG9vbHMtc2NtLTcKICAocGFja2Fn
ZQogICAgKGluaGVyaXQgcHl0aG9uLXNldHVwdG9vbHMtc2NtKQogICAgKHZlcnNpb24gIjcuMC41
IikKICAgIChzb3VyY2UgKG9yaWdpbgogICAgICAgICAgICAgIChtZXRob2QgdXJsLWZldGNoKQog
ICAgICAgICAgICAgICh1cmkgKHB5cGktdXJpICJzZXR1cHRvb2xzX3NjbSIgdmVyc2lvbikpCiAg
ICAgICAgICAgICAgKHNoYTI1NgogICAgICAgICAgICAgICAoYmFzZTMyCiAgICAgICAgICAgICAg
ICAiMGkyOHpnaHpkenprbTl3OHJyandwaGdna2ZzNThuaDZ4bnFzamhtcWp2cXhmeXBpNjdoMyIp
KSkpCiAgICAoYnVpbGQtc3lzdGVtIHB5cHJvamVjdC1idWlsZC1zeXN0ZW0pCiAgICAoYXJndW1l
bnRzCiAgICAgYCggO0Rpc2FibGVkIHRlc3RzIHRvIGF2b2lkIGV4dHJhIGRlcGVuZGVuY2llcy4K
ICAgICAgICM6dGVzdHM/ICNmCiAgICAgICAjOnBoYXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRh
cmQtcGhhc2VzCiAgICAgICAgICAgICAgICAgIDs7IERpc2FibGVkIHNhbml0eSBjaGVjayB0byBh
dm9pZCBleHRyYSBkZXBlbmRlbmNpZXMuCiAgICAgICAgICAgICAgICAgIChkZWxldGUgJ3Nhbml0
eS1jaGVjaykpKSkKICAgIChwcm9wYWdhdGVkLWlucHV0cyAobGlzdCBweXRob24tcGFja2FnaW5n
LWJvb3RzdHJhcCBweXRob24tdG9tbGkpKSkpCgooZGVmaW5lLXB1YmxpYyBweXRob24tcGF0aHNw
ZWMtMC4xMC4xCiAgKHBhY2thZ2UKICAgIChuYW1lICJweXRob24tcGF0aHNwZWMiKQogICAgKHZl
cnNpb24gIjAuMTAuMSIpCiAgICAoc291cmNlIDs7IChvcmlnaW4KICAgICA7OyAgIChtZXRob2Qg
dXJsLWZldGNoKQogICAgIDs7ICAgKHVyaSAocHlwaS11cmkgInBhdGhzcGVjIiB2ZXJzaW9uKSkK
ICAgICA7OyAgIChzaGEyNTYKICAgICA7OyAgICAoYmFzZTMyCiAgICAgOzsgICAgICIwZzlqaGho
ZjN6bXJudnp2ampkMnloaXpzYjZpOTNobWxzemIwOXdpeGxyMW5yaG4za2tzIikpKQogICAgIChv
cmlnaW4KICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQogICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5j
ZQogICAgICAgICAgICAgKHVybAogICAgICAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vY3Bi
dXJuei9weXRob24tcGF0aHNwZWMiKQogICAgICAgICAgICAgKGNvbW1pdCAoc3RyaW5nLWFwcGVu
ZCAidiIgdmVyc2lvbikpKSkKICAgICAgIChzaGEyNTYKICAgICAgICAoYmFzZTMyICIwc2d6aDdh
ZDF4MDk4ZDBybG4wMWYwcWFicGE3bW5wMjY4NjNpc25jYml5cXN4aDFnYXhwIikpKSkKICAgIChi
dWlsZC1zeXN0ZW0gcHlwcm9qZWN0LWJ1aWxkLXN5c3RlbSkKICAgIChob21lLXBhZ2UgImh0dHBz
Oi8vZ2l0aHViLmNvbS9jcGJ1cm56L3B5dGhvbi1wYXRoc3BlYyIpCiAgICAoc3lub3BzaXMKICAg
ICAiVXRpbGl0eSBsaWJyYXJ5IGZvciBnaXRpZ25vcmUgc3R5bGUgcGF0dGVybiBtYXRjaGluZyBv
ZiBmaWxlIHBhdGhzLiIpCiAgICAoZGVzY3JpcHRpb24KICAgICAiVXRpbGl0eSBsaWJyYXJ5IGZv
ciBnaXRpZ25vcmUgc3R5bGUgcGF0dGVybiBtYXRjaGluZyBvZiBmaWxlIHBhdGhzLiIpCiAgICAo
bGljZW5zZSBsaWNlbnNlOm1wbDIuMCkpKQoKOzsgVGhpcyBkZXBlbmRzIG9uIHBhY2thZ2VzIGlu
IHB5dGhvbi14eXouc2NtOgo7OyBweXRob24tdmVyc2lvbiwgcHl0aG9uLWltcG9ydGxpYi1tZXRh
ZGF0YSwgcHl0aG9uLXBhdGhzcGVjLAo7OyBweXRob24tcGx1Z2d5LTEuMCwgYW5kIHB5dGhvbi1w
bGF0Zm9ybWRpcnMuCihkZWZpbmUtcHVibGljIHB5dGhvbi1oYXRjaGxpbmcKICAocGFja2FnZQog
ICAgKG5hbWUgInB5dGhvbi1oYXRjaGxpbmciKQogICAgKHZlcnNpb24gIjEuMTAuMCIpCiAgICAo
c291cmNlIChvcmlnaW4KICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKICAgICAgICAg
ICAgICAodXJpIChnaXQtcmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6
Ly9naXRodWIuY29tL3B5cGEvaGF0Y2giKQogICAgICAgICAgICAgICAgICAgIChjb21taXQgKHN0
cmluZy1hcHBlbmQgImhhdGNobGluZy12IiB2ZXJzaW9uKSkpKQogICAgICAgICAgICAgIChmaWxl
LW5hbWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkKICAgICAgICAgICAgICAoc2hhMjU2
CiAgICAgICAgICAgICAgIChiYXNlMzIKICAgICAgICAgICAgICAgICIwYWh4NjJ3NzExYTJ2bmI5
MWFocXhydzh5aTBncTBrZmNoM2ZrNmFrem5nZDEzMzc2Y3pqIikpKSkKICAgIDs7IHB5dGhvbi1w
eXBhLWJ1aWxkIG5lZWRlZCBmb3IgYm9vdHN0cmFwcGluZy4KICAgIDs7IE90aGVyd2lzZSB3ZSBn
ZXQgYSBjaXJjdWxhciByZWZlcmVuY2U6CiAgICA7OyBweXRob24taGF0Y2hsaW5nIHRyeWluZyB0
byBidWlsZCBpdHNlbGYsIHdpdGhvdXQKICAgIDs7IGZpcnN0IGhhdmluZyBoYXRjaGxpbmcgaW5z
dGFsbGVkLgogICAgKGlucHV0cyAobGlzdCBweXRob24tZWRpdGFibGVzCiAgICAgICAgICAgICAg
ICAgIHB5dGhvbi1wYWNrYWdpbmctYm9vdHN0cmFwCiAgICAgICAgICAgICAgICAgIDs7IEJlbG93
IGZyb20gcHl0aG9uLXh5ei5zY20sIGNhbiBiZSBtb3ZlZCB0byBweXRob24tYnVpbGQuc2NtCiAg
ICAgICAgICAgICAgICAgIHB5dGhvbi1wYXRoc3BlYy0wLjEwLjEKICAgICAgICAgICAgICAgICAg
OzsgQmVsb3cgZnJvbSBweXRob24teHl6LnNjbSwgY2FuIGJlIG1vdmVkIHRvIHB5dGhvbi1idWls
ZC5zY20KICAgICAgICAgICAgICAgICAgcHl0aG9uLXBsdWdneS0xLjAKICAgICAgICAgICAgICAg
ICAgcHl0aG9uLXRvbWxpKSkKICAgIChidWlsZC1zeXN0ZW0gcHlwcm9qZWN0LWJ1aWxkLXN5c3Rl
bSkKICAgIChhcmd1bWVudHMKICAgICBgKCA7VGVzdHMgZGVwZW5kIG9uIG1vZHVsZSBweXRob24t
aGF0Y2gsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBjaXJjdWxhciByZWZlcmVuY2VzCiAgICAgICAj
OnRlc3RzPyAjZgogICAgICAgIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNl
cwogICAgICAgICAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgICAgICAgICAo
bGFtYmRhIF8KICAgICAgICAgICAgICAgICAgICAgIChjaGRpciAiYmFja2VuZCIpCiAgICAgICAg
ICAgICAgICAgICAgICA7OyBaSVAgZG9lcyBub3Qgc3VwcG9ydCB0aW1lc3RhbXBzIGJlZm9yZSAx
OTgwLgogICAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiU09VUkNFX0RBVEVfRVBPQ0giICIz
MTU1MzI4MDAiKQogICAgICAgICAgICAgICAgICAgICAgKGludm9rZSAicHl0aG9uIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiLW0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJidWlsZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0td2hlZWwiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICItLW5vLWlzb2xhdGlvbiIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi4iKSkpCiAgICAgICAgICAgICAgICAgIChyZXBsYWNlICdpbnN0YWxsCiAg
ICAgICAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgIzphbGxvdy1vdGhlci1r
ZXlzKQogICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHdobCAoY2FyIChmaW5kLWZpbGVzICJk
aXN0IiAiXFwud2hsJCIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZva2UgInBpcCIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1jYWNoZS1kaXIiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8taW5wdXQiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImluc3RhbGwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0t
bm8tZGVwcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1wcmVmaXgiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGwpKSkpKSkpCiAgICAoaG9tZS1wYWdlICJo
dHRwczovL29mZWsuZGV2L3Byb2plY3RzL2hhdGNoLyIpCiAgICAoc3lub3BzaXMgIkJvb3RzdHJh
cCBiaW5hcmllcyB0byBidWlsZCBAY29kZXtweXRob24taGF0Y2h9IikKICAgIChkZXNjcmlwdGlv
biAiQm9vdHN0cmFwIGJpbmFyaWVzIHRvIGJ1aWxkIEBjb2Rle3B5dGhvbi1oYXRjaH0iKQogICAg
OzsgTUlUIExpY2Vuc2UKICAgIChsaWNlbnNlIGxpY2Vuc2U6ZXhwYXQpKSkKCjs7IChkZWZpbmUt
cHVibGljIHB5dGhvbi1oYXRjaGxpbmcKOzsgICAgIChwYWNrYWdlCjs7ICAgICAobmFtZSAicHl0
aG9uLWhhdGNobGluZyIpCjs7ICAgICAodmVyc2lvbiAiMS4xMC4wIikKOzsgICAgIChzb3VyY2Ug
KG9yaWdpbgo7OyAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQo7OyAgICAgICAgICAg
ICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKOzsgICAgICAgICAgICAgICAgICAgICAodXJsICJodHRw
czovL2dpdGh1Yi5jb20vcHlwYS9oYXRjaCIpCjs7ICAgICAgICAgICAgICAgICAgICAgKGNvbW1p
dCAoc3RyaW5nLWFwcGVuZCAiaGF0Y2hsaW5nLXYiIHZlcnNpb24pKSkpCjs7ICAgICAgICAgICAg
ICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQo7OyAgICAgICAgICAg
ICAgIChzaGEyNTYKOzsgICAgICAgICAgICAgICAgKGJhc2UzMgo7OyAgICAgICAgICAgICAgICAg
IjBhaHg2Mnc3MTFhMnZuYjkxYWhxeHJ3OHlpMGdxMGtmY2gzZms2YWt6bmdkMTMzNzZjemoiKSkp
KQo7OyAgICAgKGlucHV0cyAobGlzdCBweXRob24tZWRpdGFibGVzCjs7ICAgICAgICAgICAgICAg
ICAgIHB5dGhvbi1wYWNrYWdpbmctYm9vdHN0cmFwCjs7ICAgICAgICAgICAgICAgICAgIDs7IEJl
bG93IGZyb20gcHl0aG9uLXh5ei5zY20sIGNhbiBiZSBtb3ZlZCB0byBweXRob24tYnVpbGQuc2Nt
Cjs7ICAgICAgICAgICAgICAgICAgIHB5dGhvbi1wYXRoc3BlYy0wLjEwLjEKOzsgICAgICAgICAg
ICAgICAgICAgOzsgQmVsb3cgZnJvbSBweXRob24teHl6LnNjbSwgY2FuIGJlIG1vdmVkIHRvIHB5
dGhvbi1idWlsZC5zY20KOzsgICAgICAgICAgICAgICAgICAgcHl0aG9uLXBsdWdneS0xLjAKOzsg
ICAgICAgICAgICAgICAgICAgcHl0aG9uLXRvbWxpCjs7ICAgICAgICAgICAgICAgICAgIHB5dGhv
bi1oYXRjaGxpbmctYm9vdHN0cmFwKSkKOzsgICAgIChidWlsZC1zeXN0ZW0gcHlwcm9qZWN0LWJ1
aWxkLXN5c3RlbSkKOzsgICAgIChhcmd1bWVudHMKOzsgICAgICBgKCA7VGVzdHMgZGVwZW5kIG9u
IG1vZHVsZSBweXRob24taGF0Y2gsIHdoaWNoIHRoaXMKOzsgICAgICAgIDs7IGlzIGJvb3RzdHJh
cHBpbmcuCjs7ICAgICAgICAjOnRlc3RzPyAjZgo7OyAgICAgICAgIzpwaGFzZXMgKG1vZGlmeS1w
aGFzZXMgJXN0YW5kYXJkLXBoYXNlcwo7OyAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAnYnVp
bGQKOzsgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KOzsgICAgICAgICAgICAgICAgICAg
ICAgIChjaGRpciAiYmFja2VuZCIpCjs7ICAgICAgICAgICAgICAgICAgICAgICA7OyBaSVAgZG9l
cyBub3Qgc3VwcG9ydCB0aW1lc3RhbXBzIGJlZm9yZSAxOTgwLgo7OyAgICAgICAgICAgICAgICAg
ICAgICAgKHNldGVudiAiU09VUkNFX0RBVEVfRVBPQ0giICIzMTU1MzI4MDAiKQo7OyAgICAgICAg
ICAgICAgICAgICAgICAgKGludm9rZSAicHl0aG9uIgo7OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLW0iCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidWlsZCIKOzsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0td2hlZWwiCjs7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICItLW5vLWlzb2xhdGlvbiIKOzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIi4iKSkpCjs7ICAgICAgICAgICAgICAgICAgIChyZXBsYWNlICdpbnN0YWxsCjs7
ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgIzphbGxvdy1vdGhl
ci1rZXlzKQo7OyAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHdobCAoY2FyIChmaW5kLWZp
bGVzICJkaXN0IiAiXFwud2hsJCIpKSkpCjs7ICAgICAgICAgICAgICAgICAgICAgICAgIChpbnZv
a2UgInBpcCIKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1jYWNoZS1k
aXIiCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8taW5wdXQiCjs7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwiCjs7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi0tbm8tZGVwcyIKOzsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLS1wcmVmaXgiCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFz
c29jLXJlZiAlb3V0cHV0cyAib3V0IikKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGwpKSkpKSkpCjs7ICAgICAoaG9tZS1wYWdlICJodHRwczovL29mZWsuZGV2L3Byb2plY3Rz
L2hhdGNoLyIpCjs7ICAgICAoc3lub3BzaXMgIkJvb3RzdHJhcCBiaW5hcmllcyB0byBidWlsZCBA
Y29kZXtweXRob24taGF0Y2h9IikKOzsgICAgIChkZXNjcmlwdGlvbiAiQm9vdHN0cmFwIGJpbmFy
aWVzIHRvIGJ1aWxkIEBjb2Rle3B5dGhvbi1oYXRjaH0iKQo7OyAgICAgOzsgTUlUIExpY2Vuc2UK
OzsgICAgIChsaWNlbnNlIGxpY2Vuc2U6ZXhwYXQpKSkKCihkZWZpbmUtcHVibGljIHB5dGhvbi1o
YXRjaAogIChwYWNrYWdlCiAgICAobmFtZSAicHl0aG9uLWhhdGNoIikKICAgICh2ZXJzaW9uICIx
LjYuMiIpIDs7IGF0IG1pbmltdW0gMS41LjAKICAgIChzb3VyY2UgKG9yaWdpbgogICAgICAgICAg
ICAgIChtZXRob2QgZ2l0LWZldGNoKQogICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UK
ICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vcHlwYS9oYXRjaCIp
CiAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCAoc3RyaW5nLWFwcGVuZCAiaGF0Y2gtdiIgdmVy
c2lvbikpKSkKICAgICAgICAgICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVy
c2lvbikpCiAgICAgICAgICAgICAgKHNoYTI1NgogICAgICAgICAgICAgICAoYmFzZTMyCiAgICAg
ICAgICAgICAgICAiMGlmNXNzcDZ2bGZ2bmExamN2YXA0MHIwZjdwbTQ1aDdrYmlhNzhoNWl2bTE3
dmI4cDA4YiIKICAgICAgICAgICAgICAgIDs7IjAzMHlpOWh3NTBtbjg5OXBxMDczbHcyYTU1cjU3
c2tsMmc5YWdqcDNiNGw5NWYzbmF5MzAiCiAgICAgICAgICAgICAgICApKSkpCiAgICAoaW5wdXRz
IChsaXN0IHB5dGhvbi1weXBhLWJ1aWxkCiAgICAgICAgICAgICAgICAgIHB5dGhvbi1lZGl0YWJs
ZXMKICAgICAgICAgICAgICAgICAgcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YQogICAgICAgICAg
ICAgICAgICBweXRob24tdmVyc2lvbgogICAgICAgICAgICAgICAgICBweXRob24tcGFja2FnaW5n
LW5leHQKICAgICAgICAgICAgICAgICAgcHl0aG9uLXBhdGhzcGVjCiAgICAgICAgICAgICAgICAg
IHB5dGhvbi1wbHVnZ3ktMS4wIDtUT0RPOiBOb3QgZGV0ZWN0ZWQgYnkgcHl0ZXN0PwogICAgICAg
ICAgICAgICAgICBweXRob24taGF0Y2hsaW5nCiAgICAgICAgICAgICAgICAgIHB5dGhvbi10b21s
aQogICAgICAgICAgICAgICAgICBweXRob24tcGxhdGZvcm1kaXJzCiAgICAgICAgICAgICAgICAg
IHB5dGhvbi1yaWNoCiAgICAgICAgICAgICAgICAgIHB5dGhvbi10b21saS13KSkKICAgIChidWls
ZC1zeXN0ZW0gcHlwcm9qZWN0LWJ1aWxkLXN5c3RlbSkKICAgIChhcmd1bWVudHMKICAgICBgKCA7
VGVzdHMgYXBwZWFyIHRvIGJlIHdyaXR0ZW4gc3VjaCB0aGF0IHRoZSBpbnB1dCBweXRob24tcGx1
Z2d5LTEuMCBpcwogICAgICAgOzsgbm90IGRldGVjdGVkLgogICAgICAgIzp0ZXN0cz8gI2YKICAg
ICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgICAg
ICAgICAgKHJlcGxhY2UgJ2J1aWxkCiAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBfCiAgICAg
ICAgICAgICAgICAgICAgICA7OyBaSVAgZG9lcyBub3Qgc3VwcG9ydCB0aW1lc3RhbXBzIGJlZm9y
ZSAxOTgwLgogICAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiU09VUkNFX0RBVEVfRVBPQ0gi
ICIzMTU1MzI4MDAiKQogICAgICAgICAgICAgICAgICAgICAgKGludm9rZSAiaGF0Y2hsaW5nIiAi
YnVpbGQiKSkpCiAgICAgICAgICAgICAgICAgIChyZXBsYWNlICdpbnN0YWxsCiAgICAgICAgICAg
ICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAg
ICAgICAgICAgICAgICAgICAgKGxldCAoKHdobCAoY2FyIChmaW5kLWZpbGVzICJkaXN0IiAiXFwu
d2hsJCIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZva2UgInBpcCIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1jYWNoZS1kaXIiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tbm8taW5wdXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImluc3RhbGwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8tZGVwcyIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1wcmVmaXgiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGwpKSkpCiAgICAgICAgICAgICAgICAgIChyZXBsYWNlICdj
aGVjawogICAgICAgICAgICAgICAgICAgIChsYW1iZGEqICgjOmtleSB0ZXN0cz8gIzphbGxvdy1v
dGhlci1rZXlzKQogICAgICAgICAgICAgICAgICAgICAgKHdoZW4gdGVzdHM/CiAgICAgICAgICAg
ICAgICAgICAgICAgIChjaGRpciAidGVzdHMiKQogICAgICAgICAgICAgICAgICAgICAgICAoaW52
b2tlICJweXRlc3QiICItdnYiKSkpKQogICAgICAgICAgICAgICAgICA7OyBDYW4ndCBoYXZlIGhh
dGNoIGFzIGEgcmVxdWlyZW1lbnQgb2YgaXRzZWxmLgogICAgICAgICAgICAgICAgICAoZGVsZXRl
ICdzYW5pdHktY2hlY2spKSkpCiAgICAoaG9tZS1wYWdlICJodHRwczovL29mZWsuZGV2L3Byb2pl
Y3RzL2hhdGNoLyIpCiAgICAoc3lub3BzaXMgIlB5dGhvbiBidWlsZCBzeXN0ZW0gd2l0aCBwcm9q
ZWN0IGdlbmVyYXRpb24iKQogICAgKGRlc2NyaXB0aW9uCiAgICAgIlB5dGhvbiBidWlsZCBzeXN0
ZW0gd2l0aCBwcm9qZWN0IGdlbmVyYXRpb24uICBJdCBhbHNvIGRlZmluZXMgYSBzcGVjaWZpYwpz
eW50YXggaW4gQGNvZGV7dG9tbH0gZmlsZXMgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4iKQog
ICAgOzsgTUlUIExpY2Vuc2UKICAgIChsaWNlbnNlIGxpY2Vuc2U6ZXhwYXQpKSkKCihkZWZpbmUt
cHVibGljIHB5dGhvbi1oYXRjaC12Y3MKICA7OyBUYWdzIGFyZSBub3QgYWNjdXJhdGU7IGp1c3Qg
dXNlIHRoZSBjb21taXQgaXRzZWxmLgogIChsZXQgKChjb21taXQgIjM2N2RhZWRiMjNiYTkwNmYz
ZTA3MTRjNjQzOTJmZGQ2ZmZhNjlhYjIiKQogICAgICAgIChyZXZpc2lvbiAiMSIpKQogICAgKHBh
Y2thZ2UKICAgICAgKG5hbWUgInB5dGhvbi1oYXRjaC12Y3MiKQogICAgICAodmVyc2lvbiAoZ2l0
LXZlcnNpb24gIjAuMi4wIiByZXZpc2lvbiBjb21taXQpKQogICAgICAoc291cmNlIChvcmlnaW4K
ICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQogICAgICAgICAgICAgICAgKHVyaSAo
Z2l0LXJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRodWIu
Y29tL29mZWsvaGF0Y2gtdmNzIikKICAgICAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0
KSkpCiAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lv
bikpCiAgICAgICAgICAgICAgICAoc2hhMjU2CiAgICAgICAgICAgICAgICAgKGJhc2UzMgogICAg
ICAgICAgICAgICAgICAiMG5sbnYzMmpxaXo4aWtjMDEzaDVzaW1taXFxZzBxYTdwbTBxY2JkOHlp
cXExcDQzaXcwNSIpKSkpCiAgICAgIChidWlsZC1zeXN0ZW0gcHlwcm9qZWN0LWJ1aWxkLXN5c3Rl
bSkKICAgICAgKGlucHV0cyAobGlzdCBweXRob24tcHlwYS1idWlsZAogICAgICAgICAgICAgICAg
ICAgIHB5dGhvbi1wYXRoc3BlYy0wLjEwLjEKICAgICAgICAgICAgICAgICAgICBweXRob24tcGx1
Z2d5LTEuMAogICAgICAgICAgICAgICAgICAgIHB5dGhvbi1lZGl0YWJsZXMKICAgICAgICAgICAg
ICAgICAgICBnaXQKICAgICAgICAgICAgICAgICAgICBweXRob24taGF0Y2hsaW5nCiAgICAgICAg
ICAgICAgICAgICAgOzsgcHl0aG9uLWhhdGNoCiAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXR5
cGluZy1leHRlbnNpb25zKSkKICAgICAgKG5hdGl2ZS1pbnB1dHMgKGxpc3QgcHl0aG9uLXB5dGVz
dAogICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBweXRob24tc2V0dXB0b29scy1zY20tNi40
IG1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNldHVwdG9vbHMtc2Nt
LTcpKQogICAgICA7OyAoYXJndW1lbnRzCiAgICAgIDs7ICAobGlzdCAjOnBoYXNlcyAjfihtb2Rp
ZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAo
cmVwbGFjZSAnYnVpbGQKICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgXwog
ICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ZW52ICJTT1VSQ0VfREFURV9FUE9D
SCIgIjMxNTUzMjgwMCIpCiAgICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgIChpbnZva2Ug
InB5dGhvbiIKICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW0iCiAg
ICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkIgogICAgICA7OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXdoZWVsIgogICAgICA7OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICItLW5vLWlzb2xhdGlvbiIKICAgICAgOzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIpKSkKICAgICAgOzsgICAgICAgICAgICAgICAg
ICAgICAocmVwbGFjZSAnaW5zdGFsbAogICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgKGxh
bWJkYSogKCM6a2V5IG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAgICA7OyAgICAgICAg
ICAgICAgICAgICAgICAgICAobGV0ICgod2hsIChjYXIgKGZpbmQtZmlsZXMgImRpc3QiICJcXC53
aGwkIikpKSkKICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW52b2tlICJwaXAi
CiAgICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1jYWNoZS1k
aXIiCiAgICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1pbnB1
dCIKICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsIgog
ICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8tZGVwcyIKICAg
ICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXByZWZpeCIKICAgICAg
OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkb3V0cHV0CiAgICAgIDs7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGwpKSkpCiAgICAgIDs7ICAgICAgICAg
ICAgICAgICAgICAgKHJlcGxhY2UgJ2NoZWNrCiAgICAgIDs7ICAgICAgICAgICAgICAgICAgICAg
ICAobGFtYmRhKiAoIzprZXkgdGVzdHM/ICM6YWxsb3ctb3RoZXIta2V5cykKICAgICAgOzsgICAg
ICAgICAgICAgICAgICAgICAgICAgKHdoZW4gdGVzdHM/CiAgICAgIDs7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGludm9rZSAicHl0ZXN0IiAiLXZ2diIpKSkpKSkpIDspCiAgICAgIChhcmd1
bWVudHMKICAgICBgKCA7VGVzdHMgZGVwZW5kIG9uIG1vZHVsZSBweXRob24taGF0Y2gsIHdoaWNo
IHRoaXMKICAgICAgIDs7IGlzIGJvb3RzdHJhcHBpbmcuCiAgICAgICAjOnRlc3RzPyAjZgogICAg
ICAgIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAg
ICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KICAgICAg
ICAgICAgICAgICAgICAgIDs7KGNoZGlyICJiYWNrZW5kIikKICAgICAgICAgICAgICAgICAgICAg
IDs7IFpJUCBkb2VzIG5vdCBzdXBwb3J0IHRpbWVzdGFtcHMgYmVmb3JlIDE5ODAuCiAgICAgICAg
ICAgICAgICAgICAgICAoc2V0ZW52ICJTT1VSQ0VfREFURV9FUE9DSCIgIjMxNTUzMjgwMCIpCiAg
ICAgICAgICAgICAgICAgICAgICAoaW52b2tlICJweXRob24iCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICItbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLS13aGVlbCIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIi0tbm8taXNvbGF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
LiIpKSkKICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgJ2luc3RhbGwKICAgICAgICAgICAgICAg
ICAgICAobGFtYmRhKiAoIzprZXkgb3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAg
ICAgICAgICAgICAgICAobGV0ICgod2hsIChjYXIgKGZpbmQtZmlsZXMgImRpc3QiICJcXC53aGwk
IikpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKGludm9rZSAicGlwIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICItLW5vLWNhY2hlLWRpciIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiLS1uby1pbnB1dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aW5zdGFsbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1kZXBzIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXByZWZpeCIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYXNzb2MtcmVmICVvdXRwdXRzICJvdXQiKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdobCkpKSkpKSkKICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9vZmVr
LmRldi9wcm9qZWN0cy9oYXRjaC8iKQogICAgICAoc3lub3BzaXMgIlBsdWdpbiBmb3IgQGNvZGV7
cHl0aG9uLWhhdGNofSB0byBpbmNsdWRlIHZlcnNpb25zIikKICAgICAgKGRlc2NyaXB0aW9uCiAg
ICAgICAiVGhpcyBwbHVnaW4gZGVmaW5lcyBhIHZlcnNpb24tY29udHJvbCBzeW50YXggZm9yIHVz
ZSB3aXRoCkBjb2Rle3RvbWx9IGZpbGVzIGludGVuZGVkIGZvciB1c2Ugd2l0aCBAY29kZXtweXRo
b24taGF0Y2h9LiIpCiAgICAgIDs7IE1JVCBMaWNlbnNlCiAgICAgIChsaWNlbnNlIGxpY2Vuc2U6
ZXhwYXQpKSkpCgooZGVmaW5lLXB1YmxpYyBweXRob24tcHl0ZXN0LWljZGlmZgogIChwYWNrYWdl
CiAgICAobmFtZSAicHl0aG9uLXB5dGVzdC1pY2RpZmYiKQogICAgKHZlcnNpb24gIjAuNiIpCiAg
ICAoc291cmNlIChvcmlnaW4KICAgICAgICAgICAgICAobWV0aG9kIHVybC1mZXRjaCkKICAgICAg
ICAgICAgICAodXJpIChweXBpLXVyaSAicHl0ZXN0LWljZGlmZiIgdmVyc2lvbikpCiAgICAgICAg
ICAgICAgKHNoYTI1NgogICAgICAgICAgICAgICAoYmFzZTMyCiAgICAgICAgICAgICAgICAiMWI4
dnpuMmh2djZ4MjV3MXM0NDZxMXJmc2JkaWs2MTdsenBhbDNxYjk0eDhhMTJ5endnOCIpKSkpCiAg
ICAoYnVpbGQtc3lzdGVtIHB5cHJvamVjdC1idWlsZC1zeXN0ZW0pCiAgICAocHJvcGFnYXRlZC1p
bnB1dHMgKGxpc3QgcHl0aG9uLXB5cGEtYnVpbGQgcHl0aG9uLWljZGlmZiBweXRob24tcHByaW50
cHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24tcGx1Z2d5LTEuMCkpCiAgICAo
bmF0aXZlLWlucHV0cyAobGlzdCBweXRob24tcHl0ZXN0KSkKICAgIChhcmd1bWVudHMKICAgICBg
KDs7IFRlc3RzIGZhaWwgd2l0aCAiY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDAgaXRlbXMiCiAg
ICAgICAjOnRlc3RzPyAjZikpCiAgICA7OyAoYXJndW1lbnRzCiAgICA7OyAgYCgjOnBoYXNlcwog
ICAgOzsgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgOzsgICAgICAoYWRk
LWJlZm9yZSAnY2hlY2sgJ2NoZGlyLXRvLXRlc3QtZGlyCiAgICA7OyAgICAgICAgKGNoZGlyICJ0
ZXN0cyIpKSkpKQogICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2hqd3AvcHl0ZXN0
LWljZGlmZiIpCiAgICAoc3lub3BzaXMgIkNvbG9yZWQgZGlmZnMgdXNpbmcgQGNvZGV7cHl0aG9u
LWljZGlmZn0gZm9yIHB5dGVzdCBvdXRwdXQiKQogICAgKGRlc2NyaXB0aW9uCiAgICAgIlRoaXMg
cGFja2FnZSB1c2VzIEBjb2Rle3B5dGhvbi1pY2RpZmZ9IHRvIGFkZCBjb2xvciB0byB0aGUgb3V0
cHV0IG9mCnB5dGVzdCBhc3NlcnRpb25zLiIpCiAgICAobGljZW5zZSAobGljZW5zZTpub24tY29w
eWxlZnQgIkxJQ0VOU0UiKSkpKQoKKGRlZmluZS1wdWJsaWMgcHl0aG9uLWhhdGNoLWZhbmN5LXB5
cGktcmVhZG1lCiAgKHBhY2thZ2UKICAgIChuYW1lICJweXRob24taGF0Y2gtZmFuY3ktcHlwaS1y
ZWFkbWUiKQogICAgKHZlcnNpb24gIjIyLjguMCIpCiAgICAoc291cmNlIChvcmlnaW4KICAgICAg
ICAgICAgICAobWV0aG9kIHVybC1mZXRjaCkKICAgICAgICAgICAgICAodXJpIChweXBpLXVyaSAi
aGF0Y2hfZmFuY3lfcHlwaV9yZWFkbWUiIHZlcnNpb24pKQogICAgICAgICAgICAgIChzaGEyNTYK
ICAgICAgICAgICAgICAgKGJhc2UzMgogICAgICAgICAgICAgICAgOzsgUHlQSSBoYXNoIHByb2Js
ZW0KICAgICAgICAgICAgICAgIDs7IjF5a2Z6MXNiejU4eGJqdzVrOXhwbW41cjZqaTE2dzh2YWc0
N2o4Zjk2OWJxeTN3NTJpa3giCiAgICAgICAgICAgICAgICAiMHNuMndzZmJwc2JmMm1xaGp2dzYy
aDFjZnk1bXozZDdpcXlxdnM1YzIwY25sMG4yaTRmcyIpKSkpCiAgICAoYnVpbGQtc3lzdGVtIHB5
cHJvamVjdC1idWlsZC1zeXN0ZW0pCiAgICAocHJvcGFnYXRlZC1pbnB1dHMgKGxpc3QgcHl0aG9u
LXRvbWxpIHB5dGhvbi10eXBpbmctZXh0ZW5zaW9ucykpCiAgICAobmF0aXZlLWlucHV0cyAobGlz
dCBweXRob24tcHlwYS1idWlsZAogICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXBhdGhz
cGVjLTAuMTAuMQogICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXBsdWdneS0xLjAKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1lZGl0YWJsZXMKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB5dGhvbi1oYXRjaGxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi13
aGVlbAogICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5dGVzdAogICAgICAgICAgICAg
ICAgICAgICAgICAgcHl0aG9uLXB5dGVzdC1pY2RpZmYpKQogICAgKGFyZ3VtZW50cwogICAgIGAo
IzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAg
ICAoYWRkLWJlZm9yZSAnYnVpbGQgJ2Rpc2FibGUtYnJva2VuLXRlc3RzCiAgICAgICAgICAgICAg
ICAgICAgKGxhbWJkYSBfCiAgICAgICAgICAgICAgICAgICAgICA7OyBTa2lwIHRoZSB0ZXN0cyBm
b3IgImJ1aWxkaW5nIi4gR3VpeCBhbHJlYWR5IGRvZXMgdGhpcywKICAgICAgICAgICAgICAgICAg
ICAgIDs7IHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCBpdCBmb3IgdGhpcyBwYWNrYWdlLgogICAg
ICAgICAgICAgICAgICAgICAgKGNoZGlyICJ0ZXN0cyIpCiAgICAgICAgICAgICAgICAgICAgICAo
aW52b2tlICJzZWQiICItaSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjExaXB5dGVz
dC5za2lwKCdObyBuZWVkIHRvIHRlc3RcCiBidWlsZGluZzsgZ3VpeCBkb2VzIHRoaXMgYWxyZWFk
eScsIGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRlc3RfZW5kX3RvX2VuZC5weSIpCiAgICAgICAgICAgICAgICAgICAgICAoY2hkaXIgIi4u
LyIpKSkKICAgICAgICAgICAgICAgICAgOzsgWFhYOiBQRVAgNTE3IG1hbnVhbCBidWlsZC9pbnN0
YWxsIHByb2NlZHVyZXMgY29waWVkIGZyb20KICAgICAgICAgICAgICAgICAgOzsgcHl0aG9uLWlz
b3J0LgogICAgICAgICAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgICAgICAg
ICAobGFtYmRhIF8KICAgICAgICAgICAgICAgICAgICAgIDs7IFpJUCBkb2VzIG5vdCBzdXBwb3J0
IHRpbWVzdGFtcHMgYmVmb3JlIDE5ODAuCiAgICAgICAgICAgICAgICAgICAgICAoc2V0ZW52ICJT
T1VSQ0VfREFURV9FUE9DSCIgIjMxNTUzMjgwMCIpCiAgICAgICAgICAgICAgICAgICAgICAoaW52
b2tlICJweXRob24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbSIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImJ1aWxkIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiLS13aGVlbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8taXNvbGF0aW9u
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIpKSkKICAgICAgICAgICAgICAgICAg
KHJlcGxhY2UgJ2luc3RhbGwKICAgICAgICAgICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgb3V0
cHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgICAgICAgICAobGV0ICgod2hs
IChjYXIgKGZpbmQtZmlsZXMgImRpc3QiICJcXC53aGwkIikpKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgKGludm9rZSAicGlwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW5v
LWNhY2hlLWRpciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1pbnB1dCIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbCIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiLS1uby1kZXBzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICItLXByZWZpeCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVm
ICVvdXRwdXRzICJvdXQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdobCkpKSkK
ICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgJ2NoZWNrCiAgICAgICAgICAgICAgICAgICAgKGxh
bWJkYSogKCM6a2V5IHRlc3RzPyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgICAg
ICAgICAod2hlbiB0ZXN0cz8KICAgICAgICAgICAgICAgICAgICAgICAgKGludm9rZSAicHl0ZXN0
IiAiLXZ2IikpKSkpKSkKICAgIChob21lLXBhZ2UKICAgICAiaHR0cHM6Ly9naXRodWIuY29tL2h5
bmVrL2hhdGNoLWZhbmN5LXB5cGktcmVhZG1lIikKICAgIChzeW5vcHNpcyAiU3ludGF4IGZvciBz
dHlsaW5nIFB5UEkgUkVBRE1FcyIpCiAgICAoZGVzY3JpcHRpb24KICAgICAiRGVmaW5lcyBhIHN5
bnRheCBmb3IgdGhlIHB5dGhvbi1oYXRjaCBidWlsZCBzeXN0ZW0sIGludGVuZGVkIGZvciBzdHls
aW5nClJFQURNRXMgZm9yIFB5UEkuIikKICAgIDs7IE1JVCBMaWNlbnNlCiAgICAobGljZW5zZSBs
aWNlbnNlOmV4cGF0KSkpCgo7OyBIYXMgdG8gYmUgZG9uZSBtYW51YWxseS4gRE8gTk9UIGNvcHkg
YW5kIHBhc3RlIHRoaXMgb25lLgooZGVmaW5lLXB1YmxpYyBweXRob24tanNvbnNjaGVtYS00LjE1
CiAgKHBhY2thZ2UKICAgIChpbmhlcml0IHB5dGhvbi1qc29uc2NoZW1hLW5leHQpCiAgICAodmVy
c2lvbiAiNC4xNi4wIikKICAgIChzb3VyY2UgKG9yaWdpbgogICAgICAgICAgICAgIChtZXRob2Qg
dXJsLWZldGNoKQogICAgICAgICAgICAgICh1cmkgKHB5cGktdXJpICJqc29uc2NoZW1hIiB2ZXJz
aW9uKSkKICAgICAgICAgICAgICAoc2hhMjU2CiAgICAgICAgICAgICAgIChiYXNlMzIKICAgICAg
ICAgICAgICAgIDs7IFB5UEkgaGFzaGluZyBwcm9ibGVtCiAgICAgICAgICAgICAgICAiMDhzYnc1
Zm4xOXZuOHg3YzIxNmdrY3p5emQ1NzU3MDJ5eDJ2bXFkcmd4cGdmdnE1amwwbiIKICAgICAgICAg
ICAgICAgIDs7IjA3cHloOGc0Y3NhcGtmamdqd3c3dmt4d3ZoMXF3eHdxeHo4MndtMmIxa214ajY5
cmd4MTEiCiAgICAgICAgICAgICAgICApKSkpCiAgICAobmF0aXZlLWlucHV0cyAobGlzdCBweXRo
b24tcHlwYS1idWlsZAogICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXR3aXN0ZWQKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1oYXRjaAogICAgICAgICAgICAgICAgICAgICAg
ICAgcHl0aG9uLWhhdGNobGluZwogICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXBhdGhz
cGVjLTAuMTAuMQogICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXBsdWdneS0xLjAKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1lZGl0YWJsZXMKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB5dGhvbi1oYXRjaC12Y3MKICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1z
ZXR1cHRvb2xzLXNjbS03CiAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24taGF0Y2gtZmFu
Y3ktcHlwaS1yZWFkbWUpKQogICAgKHByb3BhZ2F0ZWQtaW5wdXRzIChsaXN0IHB5dGhvbi1hdHRy
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1pbXBvcnRsaWItbWV0YWRhdGEK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24tcHlyc2lzdGVudAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB5dGhvbi10eXBpbmctZXh0ZW5zaW9ucwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB5dGhvbi1oYXRjaC12Y3MpKQogICAgKGhvbWUtcGFnZSAiaHR0cHM6
Ly9naXRodWIuY29tL3B5dGhvbi1qc29uc2NoZW1hL2pzb25zY2hlbWEiKSkpCgo7OzsgT0NhbWwK
OzsgUmVxdWlyZXMgcHl0aG9uLWpzb25zY2hlbWEgd2l0aCB2ZXJzaW9uIGF0IG1pbmltdW0gNC42
LjAgdG8gcnVuCjs7IHRlc3RzLiAKOzsgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9haHJlZnMvYXRk
L2lzc3Vlcy8zMDYgZm9yIG1vcmUgaW5mbyBvbiB0aGF0LgooZGVmaW5lLXB1YmxpYyBvY2FtbC1h
dGQKICAocGFja2FnZQogICAgKG5hbWUgIm9jYW1sLWF0ZCIpCiAgICAodmVyc2lvbiAiMi4xMC4w
IikKICAgIChzb3VyY2UgKG9yaWdpbgogICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQog
ICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAodXJs
ICJodHRwczovL2dpdGh1Yi5jb20vYWhyZWZzL2F0ZCIpCiAgICAgICAgICAgICAgICAgICAgKGNv
bW1pdCB2ZXJzaW9uKSkpCiAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBu
YW1lIHZlcnNpb24pKQogICAgICAgICAgICAgIChzaGEyNTYKICAgICAgICAgICAgICAgKGJhc2Uz
MgogICAgICAgICAgICAgICAgIjEwZmdhaGRpZ3JsMDFweTBrMHEyZDZhNjB5cHMzOHE5NmR4aGpu
em05ano0ZzkzMTcxNmwiKSkpKQogICAgKGJ1aWxkLXN5c3RlbSBkdW5lLWJ1aWxkLXN5c3RlbSkK
ICAgIChhcmd1bWVudHMKICAgICBgKCM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1w
aGFzZXMKICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgJ2NoZWNrCiAgICAgICAgICAgICAgICAg
ICAgKGxhbWJkYSogKCM6a2V5IHRlc3RzPyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAg
ICAgICAgICAgICA7OyBUaGUgZHVuZS1idWlsZC1zeXN0ZW0gZG9lcyBub3QgcnVuICJtYWtlIHRl
c3QiIGJ1dAogICAgICAgICAgICAgICAgICAgICAgOzsgImR1bmUgcnVudGVzdCB0ZXN0IC0tcmVs
ZWFzZSIuCiAgICAgICAgICAgICAgICAgICAgICA7OyBUaGlzIHByb2plY3QsIHJhdGhlciwgbmVl
ZHMgdXMgdG8gcnVuICJtYWtlIHRlc3QiLgogICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg
ICAgICAgICAgICAgICAgIDs7IEZvciB0aGlzIHBhY2thZ2UgKG9jYW1sLWF0ZCksIHdlIERPIE5P
VCBydW4gYWxsIHRoZQogICAgICAgICAgICAgICAgICAgICAgOzsgdGVzdHMuIFRoZSBhdGQgcmVw
b3NpdG9yeSBoYXMgcmVzb3VyY2VzIGZvciBzZXZlcmFsCiAgICAgICAgICAgICAgICAgICAgICA7
OyBkaWZmZXJlbnQgaW50ZXJmYWNlcyAocHl0aG9uLCBzY2FsYSwgZXRjKSwgYnV0IHdlCiAgICAg
ICAgICAgICAgICAgICAgICA7OyBkb24ndCBuZWVkIHRvIHJ1biB0aG9zZSB0ZXN0cyBpZiB3ZSBh
cmUganVzdAogICAgICAgICAgICAgICAgICAgICAgOzsgaW50ZXJlc3RlZCBpbiB0aGUgb2NhbWwg
aW50ZXJmYWNlLgogICAgICAgICAgICAgICAgICAgICAgOzsgU28gd2Ugc3RpY2sgd2l0aCBqdXN0
IHRoZSBvY2FtbCB0ZXN0cyBoZXJlLgogICAgICAgICAgICAgICAgICAgICAgKHdoZW4gdGVzdHM/
CiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZva2UgIm1ha2UiICJ0ZXN0LW9jYW1sIikpKSkp
KSkKICAgIChwcm9wYWdhdGVkLWlucHV0cyAobGlzdCBvY2FtbC1tZW5oaXIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvY2FtbC1lYXN5LWZvcm1hdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9jYW1sLW9kb2MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY2FtbC1yZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jYW1sLWNhbWxwLXN0cmVhbXMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvY2FtbC1iaW5pb3UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvY2FtbC15b2pzb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY2FtbC1jbWRs
aW5lcikpCiAgICAobmF0aXZlLWlucHV0cyAobGlzdCBvY2FtbC1hbGNvdGVzdAogICAgICAgICAg
ICAgICAgICAgICAgICAgcHl0aG9uLXB5cGEtYnVpbGQKICAgICAgICAgICAgICAgICAgICAgICAg
IHB5dGhvbi1qc29uc2NoZW1hLTQuMTUKICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1m
bGFrZTgKICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1teXB5CiAgICAgICAgICAgICAg
ICAgICAgICAgICBweXRob24tcHl0ZXN0KSkKICAgIChpbnB1dHMgKGxpc3QgcHl0aG9uKSkKICAg
IChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9haHJlZnMvYXRkIikKICAgIChzeW5vcHNp
cyAiUGFyc2VyIGZvciB0aGUgQVREIGRhdGEgZm9ybWF0IGRlc2NyaXB0aW9uIGxhbmd1YWdlIikK
ICAgIChkZXNjcmlwdGlvbgogICAgICJBVEQgaXMgYW4gT0NhbWwgbGlicmFyeSBwcm92aWRpbmcg
YSBwYXJzZXIgZm9yIHRoZSBBZGp1c3RhYmxlIFR5cGUKRGVmaW5pdGlvbnMgbGFuZ3VhZ2UuIikK
ICAgIDs7IE1vZGlmaWVkIEJTRCBsaWNlbnNlCiAgICAobGljZW5zZSAobGljZW5zZTpub24tY29w
eWxlZnQgIkxJQ0VOU0UubWQiKSkpKQoKKGRlZmluZS1wdWJsaWMgb2NhbWwtZWxwaQogIChwYWNr
YWdlCiAgICAobmFtZSAib2NhbWwtZWxwaSIpCiAgICA7OyBGb3IgbW9yZSBpbmZvcm1hdGlvbiBv
biB3aGljaCB2ZXJzaW9uIHdvcmtzIHdpdGggQ29xIDguMTYsCiAgICA7OyBzZWUgdGhlIHJlbGV2
YW50IGlzc3VlOgogICAgOzsgaHR0cHM6Ly9naXRodWIuY29tL21hdGgtY29tcC9oaWVyYXJjaHkt
YnVpbGRlci9pc3N1ZXMvMjk3CiAgICA7OyBIZXJlIHdlIHVzZQogICAgOzsgY29xLWVscGkgMS4x
NS40ICsgb2NhbWwtZWxwaSAxLjE2LjUgKwogICAgOzsgY29xLW1hdGhjb21wLWhpZXJhcmNoeS1i
dWlsZGVyIDEuMy4wIChDb3EgOC4xNikuCiAgICA7OyAodmVyc2lvbiAiMS4xNS4yIikKICAgIDs7
KHZlcnNpb24gIjEuMTYuNSIpCiAgICAodmVyc2lvbiAiMS4xNi43IikKICAgIChzb3VyY2UgKG9y
aWdpbgogICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQogICAgICAgICAgICAgICh1cmkg
KGdpdC1yZWZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5j
b20vTFBDSUMvZWxwaSIpCiAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCAoc3RyaW5nLWFwcGVu
ZCAidiIgdmVyc2lvbikpKSkKICAgICAgICAgICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1l
IG5hbWUgdmVyc2lvbikpCiAgICAgICAgICAgICAgKHNoYTI1NgogICAgICAgICAgICAgICAoYmFz
ZTMyCiAgICAgICAgICAgICAgICA7OyBmb3IgMS4xNi41CiAgICAgICAgICAgICAgICA7OyIxbDZn
cnBnbGt2eXlqMHAwMWwwcTVpaDEybHA0dml6YW1najdpNjNpZzgyZ3FweXprOWRsIgogICAgICAg
ICAgICAgICAgOzsgZm9yIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHBhdGNoIGlzIGJhc2VkIG9uICgx
LjE2LjcpCiAgICAgICAgICAgICAgICAiMWkwNzMxZjdqajQ4enZrbGE5NTlwZmZqNWwwcXlubWZ5
eGxqZ3N6YzZ6M2I0bHBuaTF4YyIpKQogICAgICAgICAgICAgIDs7IEZpeCBpbmNvbXBhdGliaWxp
dHkgd2l0aCBvY2FtbC15b2pzb25AMi4wLjIuCiAgICAgICAgICAgICAgOzsgU2VlIDxodHRwczov
L2dpdGh1Yi5jb20vTFBDSUMvZWxwaS9wdWxsLzE2Nz4uCiAgICAgICAgICAgICAgOzsocGF0Y2hl
cyAoc2VhcmNoLXBhdGNoZXMgIm9jYW1sLWVscGktZml4LXlvanNvbi5wYXRjaCIpKQogICAgICAg
ICAgICAgIChwYXRjaGVzICcoIi9ob21lL2NoaXBzL2hvbWUvY29kZS9ndWl4X3BhY2thZ2VzL2J1
aWx0L3BhdGNoZXMvb2NhbWwtZWxwaS1maXgteW9qc29uLnBhdGNoIikpCiAgICAgICAgICAgICAg
KSkKICAgIChidWlsZC1zeXN0ZW0gZHVuZS1idWlsZC1zeXN0ZW0pCiAgICAoYXJndW1lbnRzCiAg
ICAgYCgjOnRlc3QtdGFyZ2V0ICJ0ZXN0cyIpKQogICAgIDs7IEJ1aWxkIGN1cnJlbnRseSBmYWls
cyB3aXRoIGVycm9yIChyZXBlYXRlZCBzZXZlcmFsIHRpbWVzKToKICAgICA7OyAnV2FybmluZyA2
IFtsYWJlbHMtb21pdHRlZDogbGFiZWwgYXJnc2RlcHRoIHdhcyBvbWl0dGVkIGluIHRoZQogICAg
OzsgYXBwbGljYXRpb24gb2YgdGhpcyBmdW5jdGlvbi4nCiAgICAocHJvcGFnYXRlZC1pbnB1dHMg
KGxpc3Qgb2NhbWwtc3RkbGliLXNoaW1zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Nh
bWwtcHB4bGliCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2NhbWwtbWVuaGlyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2NhbWwtcmUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvY2FtbC1wcHgtZGVyaXZpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY2Ft
bC1hdGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY2FtbC1jYW1scC1zdHJlYW1zCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2NhbWwtYmluaW91CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2NhbWwteW9qc29uKSkKICAgIChuYXRpdmUtaW5wdXRzIChsaXN0IG9jYW1s
LWFuc2l0ZXJtaW5hbCBvY2FtbC1jbWRsaW5lciB0aW1lKSkKICAgIChob21lLXBhZ2UgImh0dHBz
Oi8vZ2l0aHViLmNvbS9MUENJQy9lbHBpIikKICAgIChzeW5vcHNpcyAiRUxQSSAtIEVtYmVkZGFi
bGUgzrtQcm9sb2cgSW50ZXJwcmV0ZXIiKQogICAgKGRlc2NyaXB0aW9uCiAgICAgIkVMUEkgaXMg
YW4gZXh0ZW5zaW9uIGxhbmd1YWdlIGZvciBPQ2FtbC4gIEl0IGltcGxlbWVudHMgYSB2YXJpYW50
IG9mCs67UHJvbG9nIGVucmljaGVkIHdpdGggQ29uc3RyYWludCBIYW5kbGluZyBSdWxlcywgYSBw
cm9ncmFtbWluZyBsYW5ndWFnZSBmb3IKbWFuaXB1bGF0aW5nIHN5bnRheCB0cmVlcyB3aXRoIGJp
bmRlcnMuCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYm90aCBhIGNvbW1hbmQgbGluZSBpbnRlcnBy
ZXRlciwgZWxwaSwgYW5kIGFuIE9DYW1sCmxpYnJhcnkgd2l0aCB0aGUgc2FtZSBuYW1lLiIpCiAg
ICAobGljZW5zZSBsaWNlbnNlOmxncGwyLjErKSkpCgo7OzsgQ29xCihkZWZpbmUtcHVibGljIGNv
cS1lbHBpCiAgKHBhY2thZ2UKICAgIChuYW1lICJjb3EtZWxwaSIpCiAgICAodmVyc2lvbiAiMS4x
Ni4wIikKICAgIChzb3VyY2UgKG9yaWdpbgogICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNo
KQogICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAo
dXJsICJodHRwczovL2dpdGh1Yi5jb20vTFBDSUMvY29xLWVscGkiKQogICAgICAgICAgICAgICAg
ICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNpb24pKSkpCiAgICAgICAgICAgICAg
KGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQogICAgICAgICAgICAgIChz
aGEyNTYKICAgICAgICAgICAgICAgKGJhc2UzMgogICAgICAgICAgICAgICAgIjE4dzg5OWZjejRr
eng3enlyN2EwZzRhdmNsYm01ZjgyZzdraDc2YjlmeTJzOTlqejZxNWMiKSkpKQogICAgOzsoYnVp
bGQtc3lzdGVtIGdudS1idWlsZC1zeXN0ZW0pCiAgICAoYnVpbGQtc3lzdGVtIG9jYW1sLWJ1aWxk
LXN5c3RlbSkKICAgIChwcm9wYWdhdGVkLWlucHV0cyAobGlzdCBjb3EtY29yZSkpCiAgICAoaW5w
dXRzIChsaXN0IHB5dGhvbiBsdWEtNS4xIG9jYW1sIG9jYW1sLWVscGkgb2NhbWwtemFyaXRoIGNv
cS1jb3JlCiAgICAgICAgICAgICAgICAgIGNvcS1zdGRsaWIgb2NhbWwtZmluZGxpYikpIAogICAg
KGFyZ3VtZW50cwogICAgIGAoIzp0ZXN0LXRhcmdldCAidGVzdCIKICAgICAgIDs7IEZyb20gdGhl
IHJlcG86ICJDT1FCSU49JXtiaW59JS8iICJFTFBJRElSPSV7cHJlZml4fSUvbGliL2VscGkiICJP
Q0FNTFdBUk49IgogICAgICAgIzptYWtlLWZsYWdzICwjfihsaXN0IChzdHJpbmctYXBwZW5kICJD
T1FCSU49IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkKHRo
aXMtcGFja2FnZS1pbnB1dCAiY29xLWNvcmUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIvYmluLyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0
cmluZy1hcHBlbmQgIkVMUElESVI9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMkKHRoaXMtcGFja2FnZS1pbnB1dCAib2NhbWwtZWxwaSIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9saWIvb2NhbWwvc2l0ZS1saWIvZWxw
aSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9DQU1MV0FSTj0iKQogICAgICAgIzpw
aGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAo
ZGVsZXRlICdjb25maWd1cmUpCiAgICAgICAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ2NoZWNrICdj
aGVjay1maW5kbGliLXBhdGgKICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KICAgICAgICAg
ICAgICAgICAgICAgIChpbnZva2UgIm9jYW1sZmluZCIgInF1ZXJ5IiAiY29xLWVscGkiKSkpKSkp
CiAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vTFBDSUMvY29xLWVscGkiKQogICAg
KHN5bm9wc2lzICJFbHBpIGV4dGVuc2lvbiBsYW5ndWFnZSBmb3IgQ29xIikKICAgIChkZXNjcmlw
dGlvbgogICAgICJDb3EtZWxwaSBwcm92aWRlcyBhIENvcSBwbHVnaW4gdGhhdCBlbWJlZHMgRUxQ
SSwgYW4gZXh0ZW5zaW9uIGxhbmd1YWdlCmZvciBPQ2FtbCB0aGF0IGlzIGFuIGltcGxlbWVudGF0
aW9uIG9mIM67UHJvbG9nLiAgSXQgYWxzbyBwcm92aWRlcyBhIHdheSB0bwplbWJlZCBDb3EncyB0
ZXJtcyBpbnRvIM67UHJvbG9nIHVzaW5nIHRoZSBIaWdoZXItT3JkZXIgQWJzdHJhY3QgU3ludGF4
IGFwcHJvYWNoCmFuZCBhIHdheSB0byByZWFkIHRlcm1zIGJhY2suICBJbiBhZGRpdGlvbiB0byB0
aGF0IGl0IGV4cG9ydHMgdG8gRUxQSSBhIHNldCBvZgpDb3EncyBwcmltaXRpdmVzLiAgRmluYWxs
eSBpdCBwcm92aWRlcyBhIHdheSB0byBkZWZpbmUgbmV3IHZlcm5hY3VsYXIgY29tbWFuZHMKYW5k
IG5ldyB0YWN0aWNzLiIpCiAgICAobGljZW5zZSBsaWNlbnNlOmxncGwyLjEpKSkKCihkZWZpbmUt
cHVibGljIGNvcS1tYXRoY29tcC1oaWVyYXJjaHktYnVpbGRlcgogIChwYWNrYWdlCiAgICAobmFt
ZSAiY29xLW1hdGhjb21wLWhpZXJhcmNoeS1idWlsZGVyIikKICAgIDs7IEZvciBtb3JlIGluZm9y
bWF0aW9uIG9uIHdoaWNoIHZlcnNpb24gd29ya3Mgd2l0aCBDb3EgOC4xNiwKICAgIDs7IHNlZSB0
aGUgcmVsZXZhbnQgaXNzdWU6CiAgICA7OyBodHRwczovL2dpdGh1Yi5jb20vbWF0aC1jb21wL2hp
ZXJhcmNoeS1idWlsZGVyL2lzc3Vlcy8yOTcKICAgIDs7IEhlcmUgd2UgdXNlCiAgICA7OyBjb3Et
ZWxwaSAxLjE1LjQgKyBvY2FtbC1lbHBpIDEuMTYuNSArCiAgICA7OyBjb3EtbWF0aGNvbXAtaGll
cmFyY2h5LWJ1aWxkZXIgMS4zLjAgKENvcSA4LjE2KQogICAgOzsodmVyc2lvbiAiMS4zLjAiKQog
ICAgKHZlcnNpb24gIjEuNC4wIikKICAgIChzb3VyY2UgKG9yaWdpbgogICAgICAgICAgICAgICht
ZXRob2QgZ2l0LWZldGNoKQogICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKICAgICAg
ICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vbWF0aC1jb21wL2hpZXJhcmNo
eS1idWlsZGVyIikKICAgICAgICAgICAgICAgICAgICAoY29tbWl0IChzdHJpbmctYXBwZW5kICJ2
IiB2ZXJzaW9uKSkpKQogICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFt
ZSB2ZXJzaW9uKSkKICAgICAgICAgICAgICAoc2hhMjU2CiAgICAgICAgICAgICAgIChiYXNlMzIK
ICAgICAgICAgICAgICAgIDs7IDEuMy4wCiAgICAgICAgICAgICAgICA7OyIxN2s3cmx4ZHg0M3Fk
YTZpMXlhZnBnYzY0bmE4YnIyODVjYjBtYnh5NXdyeWFmY2Rya3JjIgogICAgICAgICAgICAgICAg
OzsgMS40LjAKICAgICAgICAgICAgICAgICIxZzduYXJieDVuOGJibm5ubjhrbWdrNjJjbGFoOWZz
eTlqYjE1NHhjcjQxcDhwc3J2cnhsIikpKSkKICAgIDs7KGJ1aWxkLXN5c3RlbSBvY2FtbC1idWls
ZC1zeXN0ZW0pIDs7IGZhaWxzIGZvciBzYW1lIHJlYXNvbiBhcyBkdW5lLgogICAgKGJ1aWxkLXN5
c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQogICAgKGFyZ3VtZW50cwogICAgIGAoIzptYWtlLWZsYWdz
ICwjfihsaXN0IDs7IChzdHJpbmctYXBwZW5kICJDT1FCSU49IgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDs7ICAgICAgICAgICAgICAgICMkKHRoaXMtcGFja2FnZS1pbnB1dCAiY29xLWNv
cmUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICAgICAgICAgICAgICAgICIvYmlu
LyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIkVMUElESVI9
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkKHRoaXMtcGFj
a2FnZS1pbnB1dCAiY29xLWVscGkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIvbGliL2NvcS91c2VyLWNvbnRyaWIvZWxwaS8iKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJDT1FMSUJJTlNUQUxMPSIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmICVvdXRwdXRzICJvdXQi
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvbGliL2NvcS91
c2VyLWNvbnRyaWIiKSkKICAgICAgICM6dGVzdC10YXJnZXQgInRlc3Qtc3VpdGUiCiAgICAgICAj
OnBoYXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAgICAg
IChkZWxldGUgJ2NvbmZpZ3VyZSkKICAgICAgICAgICAgICAgICAgKGFkZC1hZnRlciAnYnVpbGQg
J2ZhaWwtZmFzdAogICAgICAgICAgICAgICAgICAgIChsYW1iZGEgXwogICAgICAgICAgICAgICAg
ICAgICAgKGludm9rZSAic3R1ZmYiKSkpCiAgICAgICAgICAgICAgICAgICkpKQogICAgKGlucHV0
cyAobGlzdCBjb3EtY29yZQogICAgICAgICAgICAgICAgICBjb3Etc3RkbGliCiAgICAgICAgICAg
ICAgICAgIDs7IGNvcS1tYXRoY29tcAogICAgICAgICAgICAgICAgICB3aGljaAogICAgICAgICAg
ICAgICAgICBvY2FtbAogICAgICAgICAgICAgICAgICBjb3EtZWxwaQogICAgICAgICAgICAgICAg
ICA7O29jYW1sLWVscGkKICAgICAgICAgICAgICAgICAgKSkKICAgIChzeW5vcHNpcyAiSGllcmFy
Y2h5IHN0cnVjdHVyZXMgZm9yIHRoZSBDb3EgcHJvb2YgYXNzaXN0YW50IikKICAgIChkZXNjcmlw
dGlvbgogICAgICJIaWVyYXJjaHkgQnVpbGRlciAoSEIpIHByb3ZpZGVzIGhpZ2ggbGV2ZWwgY29t
bWFuZHMgdG8gZGVjbGFyZSBhCmhpZXJhcmNoeSBvZiBpbnRlcmZhY2VzIGZvciB0aGUgQ29xIHN5
c3RlbS4KCkdpdmVuIGEgc3RydWN0dXJlIG9uZSBjYW4gZGV2ZWxvcCBpdHMgdGhlb3J5LCBhbmQg
dGhhdCB0aGVvcnkgYmVjb21lcwphcHBsaWNhYmxlIHRvIGFsbCBleGFtcGxlcyBvZiB0aGUgc3Ry
dWN0dXJlLiAgT25lIGNhbiBhbHNvIGRlY2xhcmUgYWx0ZXJuYXRpdmUKaW50ZXJmYWNlcywgZm9y
IGNvbnZlbmllbmNlIG9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGFuZCBwcm92aWRlIGdsdWUg
Y29kZQpsaW5raW5nIHRoZXNlIGludGVyZmFjZXMgdG8gdGhlIHN0cnVjdHVyZXMgcGFydCBvZiB0
aGUgaGllcmFyY2h5LiIpCiAgICAoaG9tZS1wYWdlICJodHRwczovL21hdGgtY29tcC5naXRodWIu
aW8vIikKICAgIDs7IE1JVCBsaWNlbnNlCiAgICAobGljZW5zZSBsaWNlbnNlOmV4cGF0KSkpCgoo
ZGVmaW5lLXB1YmxpYyBjb3EtbWF0aGNvbXAtYW5hbHlzaXMKICAocGFja2FnZQogICAgKG5hbWUg
ImNvcS1tYXRoY29tcC1hbmFseXNpcyIpCiAgICAodmVyc2lvbiAiMC41LjQiKQogICAgKHNvdXJj
ZSAob3JpZ2luCiAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCiAgICAgICAgICAgICAg
KHVyaSAoZ2l0LXJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0
aHViLmNvbS9tYXRoLWNvbXAvYW5hbHlzaXMiKQogICAgICAgICAgICAgICAgICAgIChjb21taXQg
dmVyc2lvbikpKQogICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2
ZXJzaW9uKSkKICAgICAgICAgICAgICAoc2hhMjU2CiAgICAgICAgICAgICAgIChiYXNlMzIKICAg
ICAgICAgICAgICAgICIxbDF5YXhibXFyNGxpOHg3ZzUxcTk4YTZ2MzgzZG5mOTRsdzFiNzRjY3B3
cXo5cXliejltIikpKSkKICAgIChidWlsZC1zeXN0ZW0gZ251LWJ1aWxkLXN5c3RlbSkKICAgIChh
cmd1bWVudHMKICAgICBgKCA7Tm8gcnVsZSB0byBtYWtlIHRhcmdldCAnY2hlY2snLiBTdG9wLgog
ICAgICAgOzsgTWFrZWZpbGUuY29tbW9uIGhhcyBubyByZWZlcmVuY2VzIHRvIHRlc3RzLgogICAg
ICAgOzsgVGhlcmUgYXJlIGFsc28gbm8gcmVmZXJlbmNlcyB0byB0ZXN0cyBmb3VuZCBhZnRlcgog
ICAgICAgOzsgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGluIHRoZSB0b3AKICAgICAg
IDs7IGRpcmVjdG9yeSBvZiB0aGUgY2xvbmVkIHJlcG86CiAgICAgICA7OyBmaW5kIC10eXBlIGQg
fCBncmVwIC1pIHRlc3QKICAgICAgIDs7IHJnIHRlc3QgIyB3aGVyZSByZyBpcyByaXBncmVwCiAg
ICAgICA7OyBDaGVja2luZyB0aGUgZ2l0IGxvZywgd2UgZmluZDogIkFkZCB0ZXN0IHN1aXRlIGZv
cgogICAgICAgOzsgam9pbnMgYW5kIHNldmVyYWwgZml4ZXMiLgogICAgICAgOzsKICAgICAgIDs7
IElmIHRlc3RzIGFyZSBpbmNsdWRlZCwgdGhpcyBxdW90ZSBzdWdnZXN0cyB0aGF0IHRoZXkKICAg
ICAgIDs7IHdvdWxkIGJlIHBhcnQgb2YgdGhlIHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzLAogICAg
ICAgOzsgYW5kIHRoZSB0ZXN0cyB3b3VsZCBiZSBydW4gYXMgcGFydCBvZiB0aGUgYnVpbGQKICAg
ICAgIDs7IHByb2Nlc3MuCiAgICAgICAjOnRlc3RzPyAjZgogICAgICAgIzptYWtlLWZsYWdzICwj
fihsaXN0IChzdHJpbmctYXBwZW5kICJDT1FCSU49IgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMkKHRoaXMtcGFja2FnZS1pbnB1dCAiY29xLWNvcmUiKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvYmluLyIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIkNPUUJJTklOU1RBTEw9IgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYgJW91dHB1
dHMgIm91dCIpICIvYmluLyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1h
cHBlbmQgIkRFU1RESVI9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChhc3NvYy1yZWYgJW91dHB1dHMgIm91dCIpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzdHJpbmctYXBwZW5kICJDT1FNRl9DT1FMSUI9IgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYgJW91dHB1dHMgIm91dCIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9saWIvb2NhbWwvc2l0ZS1saWIv
Y29xIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiQ09RTElC
SU5TVEFMTD0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFz
c29jLXJlZiAlb3V0cHV0cyAib3V0IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiL2xpYi9jb3EvdXNlci1jb250cmliIikpCiAgICAgICAjOnBoYXNlcyAobW9k
aWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAgICAgIChkZWxldGUgJ2Nv
bmZpZ3VyZSkKICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgJ2J1aWxkCiAgICAgICAgICAgICAg
ICAgICAgKGxhbWJkYSogKCM6a2V5IG1ha2UtZmxhZ3MgIzphbGxvdy1vdGhlci1rZXlzKQogICAg
ICAgICAgICAgICAgICAgICAgKGFwcGx5IGludm9rZSAibWFrZSIgImJ1aWxkIiBtYWtlLWZsYWdz
KSkpKSkpCiAgICAoaW5wdXRzIChsaXN0IGNvcQogICAgICAgICAgICAgICAgICBjb3Etc3RkbGli
CiAgICAgICAgICAgICAgICAgIGNvcS1tYXRoY29tcAogICAgICAgICAgICAgICAgICBjb3EtbWF0
aGNvbXAtZmlubWFwCiAgICAgICAgICAgICAgICAgIGNvcS1tYXRoY29tcC1oaWVyYXJjaHktYnVp
bGRlcgogICAgICAgICAgICAgICAgICBjb3EtZWxwaQogICAgICAgICAgICAgICAgICBjb3EtbWF0
aGNvbXAtYmlnZW5vdWdoCiAgICAgICAgICAgICAgICAgIGNvcS1jb3JlCiAgICAgICAgICAgICAg
ICAgIHdoaWNoKSkKICAgIChzeW5vcHNpcyAiUmVhbCBhbmFseXNpcyBmb3IgdGhlIENvcSBwcm9v
ZiBhc3Npc3RhbnQiKQogICAgKGRlc2NyaXB0aW9uCiAgICAgIlRoaXMgcmVwb3NpdG9yeSBjb250
YWlucyBhbiBleHBlcmltZW50YWwgbGlicmFyeSBmb3IgcmVhbCBhbmFseXNpcyBmb3IKdGhlIENv
cSBwcm9vZi1hc3Npc3RhbnQsIHVzaW5nIHRoZSBNYXRoZW1hdGljYWwgQ29tcG9uZW50cyBsaWJy
YXJ5LiIpCiAgICAoaG9tZS1wYWdlICJodHRwczovL21hdGgtY29tcC5naXRodWIuaW8vIikKICAg
IChsaWNlbnNlIGxpY2Vuc2U6Y2VjaWxsLWMpKSkKCmNvcS1lbHBpCg==
--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: inline; filename=ocaml-elpi-fix-yojson.patch
Content-Transfer-Encoding: quoted-printable

From 998dc654e5acd66d5d0c8ebe79ed04dd424eb698 Mon Sep 17 00:00:00 2001
From: Julien Puydt <julien.puydt@HIDDEN>
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 =3D
=20
   let cards =3D Trace.cards steps ~stack_frames ~aggregated_goal_success ~=
goal_text ~goal_attempts in
=20
-  let ob =3D Bi_outbuf.create_channel_writer stdout in
-  write_trace ob cards;
-  Bi_outbuf.flush_channel_writer ob
+  let buf =3D 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_t=
race1.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:)] =3D>\n main\n  [const-decl _ \n    (som=
e\n      (app\n        [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=BB), 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:)] =3D>\n main\n  [const-decl _=
 \n    (some\n      (app\n        [global (const =C2=ABIsSelfA'.phant_Build=
=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=
=BB), 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:)] =3D>\n main\n  [const-decl _ \n    (som=
e\n      (app\n        [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=BB), 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:)] =3D>\n main\n  [cons=
t-decl _ \n    (some\n      (app\n        [global (const =C2=ABIsSelfA'.pha=
nt_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (indc =C2=
=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (arity X1)]",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -31,8 +29,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "main\n [const-decl _ \n   (some\n     (app\n       [glo=
bal (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB)=
, \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (arity X1)]=
",
+                "goal_text": "main\n [const-decl _ \n   (some\n     (app\n=
       [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), 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 (con=
st =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    =
    global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (arity X1)]",
+        "current_goal_text": "main\n [const-decl _ \n   (some\n     (app\n=
       [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), 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-c=
onst _ \n     (app\n       [global (const =C2=ABIsSelfA'.phant_Build=C2=BB)=
, global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun=
 `x` X0 c0 \\ c0]) (arity X1) _))",
+                "goal_text": "with-attributes\n (with-logging\n   (instanc=
e.declare-const _ \n     (app\n       [global (const =C2=ABIsSelfA'.phant_B=
uild=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=
=C2=BB), 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-at=
tributes (with-logging (instance.declare-const A0 A1 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       [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (arity X1)]",
+              "goal_text": "main\n [const-decl _ \n   (some\n     (app\n  =
     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABn=
at=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (a=
rity 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 (instanc=
e.declare-existing A0 A1))).",
+              "rule_text": "(main [A0, A1]) :- (!), \n (coq.warning HB HB.=
deprecated \n   The syntax \"HB.instance Key FactoryInstance\" is deprecate=
d, use \"HB.instance Definition\" instead), \n (with-attributes (with-loggi=
ng (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       [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (arity X1)]",
+              "goal_text": "main\n [const-decl _ \n   (some\n     (app\n  =
     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABn=
at=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0])) (a=
rity X1)]",
               "goal_id": 1122
             },
             "cut_branch": {
-              "rule_text":
-                "(main _) :- (coq.error\n              Usage: HB.instance =
Definition <Name> :=3D <Builder> T ...).",
+              "rule_text": "(main _) :- (coq.error\n              Usage: H=
B.instance Definition <Name> :=3D <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 =C2=ABIsSelfA'.phant_Build=C2=BB), global=
 (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 =
c0 \\ c0]) (arity X1) _))",
+        "current_goal_text": "with-attributes\n (with-logging\n   (instanc=
e.declare-const _ \n     (app\n       [global (const =C2=ABIsSelfA'.phant_B=
uild=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=
=C2=BB), 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n =
                   (supported-attribute (att c7 attmap)) (!) \n            =
        (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (s=
upported-attribute (att c8 string) :- !)) =3D>\n                      parse=
-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7=
 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbos=
e bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type=
 string, att short.pack string, att infer attmap, \n     att key string, at=
t arg_sort bool, att log bool, att log.raw bool, \n     att compress_coerci=
ons bool, att export bool, att skip string, \n     att local bool, att fail=
 bool, att doc string, \n     att primitive_class bool, att primitive bool,=
 \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                  "rule_text": "(with-attributes A0) :- (attributes A1), \=
n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (=
pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (=
pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) |=
 c2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ .=
 ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n =
                   (parse-attributes.aux c2 c3 c5) \n                    (p=
i (c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                =
      parse-attributes.aux c1  c6) \n                    (std.append c5 [ge=
t-option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    =
[att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att=
 short.type string, att short.pack string, att infer attmap, \n     att key=
 string, att arg_sort bool, att log bool, att log.raw bool, \n     att comp=
ress_coercions bool, att export bool, att skip string, \n     att local boo=
l, att fail bool, att doc string, \n     att primitive_class bool, att prim=
itive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (=
!), \n (A2 =3D> (save-docstring , A0)).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/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-attribut=
es.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c3 =3D ) (c7=
 =3D c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (att c7 attm=
ap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n          (pi c8 \\ =
supported-attribute (att c8 string) :- ! =3D>\n            parse-attributes=
.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =3D>\n coq.p=
arse-attributes X2 \n  [att verbose bool, att mathcomp bool, att mathcomp.a=
xiom string, \n   att short.type string, att short.pack string, att infer a=
ttmap, \n   att key string, att arg_sort bool, att log bool, att log.raw bo=
ol, \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        par=
se-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c=
3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (=
att c7 attmap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n         =
 (pi c8 \\ supported-attribute (att c8 string) :- ! =3D>\n            parse=
-attributes.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =
=3D>\n coq.parse-attributes X2 \n  [att verbose bool, att mathcomp bool, at=
t mathcomp.axiom string, \n   att short.type string, att short.pack string,=
 att infer attmap, \n   att key string, att arg_sort bool, att log bool, at=
t 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, at=
t hnf bool] X3",
                 "goal_id": 1126
               },
               { "goal_text": "!", "goal_id": 1127 },
               {
-                "goal_text":
-                  "X3 =3D>\n (save-docstring ,\n   with-logging\n    (inst=
ance.declare-const _ \n      (app\n        [global (const =C2=ABIsSelfA'.ph=
ant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (indc =
=C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _))",
+                "goal_text": "X3 =3D>\n (save-docstring ,\n   with-logging=
\n    (instance.declare-const _ \n      (app\n        [global (const =C2=AB=
IsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n         glob=
al (indc =C2=ABO=C2=BB), 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 Fi=
le \"(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    (le=
af-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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) (c7 =3D c0)=
 (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (att c7 attmap)) (!)=
 \n          (parse-attributes.aux c2 c3 c5) \n          (pi c8 \\ supporte=
d-attribute (att c8 string) :- ! =3D>\n            parse-attributes.aux c1 =
 c6) \n          (std.append c5 [get-option c7 c6] c4) =3D>\n coq.parse-att=
ributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, co=
lumn 2, character 3:)] \n  [att verbose bool, att mathcomp bool, att mathco=
mp.axiom string, \n   att short.type string, att short.pack string, att inf=
er attmap, \n   att key string, att arg_sort bool, att log bool, att log.ra=
w 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 bo=
ol, \n   att primitive bool, att non_forgetful_inheritance bool, att hnf bo=
ol] 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        par=
se-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c=
3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (=
att c7 attmap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n         =
 (pi c8 \\ supported-attribute (att c8 string) :- ! =3D>\n            parse=
-attributes.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =
=3D>\n coq.parse-attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(=
stdin)\", line 1, column 2, character 3:)] \n  [att verbose bool, att mathc=
omp bool, att mathcomp.axiom string, \n   att short.type string, att short.=
pack string, att infer attmap, \n   att key string, att arg_sort bool, att =
log bool, att log.raw bool, \n   att compress_coercions bool, att export bo=
ol, att skip string, \n   att local bool, att fail bool, att doc string, at=
t primitive_class bool, \n   att primitive bool, att non_forgetful_inherita=
nce bool, att hnf bool] X3",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -410,8 +385,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.parse-attributes\n [attribute elpi.loc \n   (leaf-l=
oc File \"(stdin)\", line 1, column 2, character 3:)] \n [att verbose bool,=
 att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, a=
tt short.pack string, att infer attmap, \n  att key string, att arg_sort bo=
ol, att log bool, att log.raw bool, \n  att compress_coercions bool, att ex=
port bool, att skip string, \n  att local bool, att fail bool, att doc stri=
ng, att primitive_class bool, \n  att primitive bool, att non_forgetful_inh=
eritance 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 ve=
rbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.typ=
e string, att short.pack string, att infer attmap, \n  att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions b=
ool, att export bool, att skip string, \n  att local bool, att fail bool, a=
tt doc string, att primitive_class bool, \n  att primitive bool, att non_fo=
rgetful_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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 mat=
hcomp bool, att mathcomp.axiom string, \n  att short.type string, att short=
.pack string, att infer attmap, \n  att key string, att arg_sort bool, att =
log bool, att log.raw bool, \n  att compress_coercions bool, att export boo=
l, 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 ve=
rbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.typ=
e string, att short.pack string, att infer attmap, \n  att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions b=
ool, att export bool, att skip string, \n  att local bool, att fail bool, a=
tt doc string, att primitive_class bool, \n  att primitive bool, att non_fo=
rgetful_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 =3D supported-attribute c=
0))) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                  "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.ma=
p A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-=
attribute c0))) A3), \n (A3 =3D> 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 mat=
hcomp.axiom string, \n  att short.type string, att short.pack string, att i=
nfer attmap, \n  att key string, att arg_sort bool, att log bool, att log.r=
aw 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 boo=
l, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool=
] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X4",
+                "goal_text": "std.map\n [att verbose bool, att mathcomp bo=
ol, att mathcomp.axiom string, \n  att short.type string, att short.pack st=
ring, att infer attmap, \n  att key string, att arg_sort bool, att log bool=
, att log.raw bool, \n  att compress_coercions bool, att export bool, att s=
kip string, \n  att local bool, att fail bool, att doc string, att primitiv=
e_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, a=
tt hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X4",
                 "goal_id": 1130
               },
               {
-                "goal_text":
-                  "X4 =3D>\n parse-attributes.aux\n  [attribute elpi.loc \=
n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
+                "goal_text": "X4 =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ax=
iom string, \n  att short.type string, att short.pack string, att infer att=
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  a=
tt primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\=
\n c1 \\ c1 =3D supported-attribute c0) X4",
+        "current_goal_text": "std.map\n [att verbose bool, att mathcomp bo=
ol, att mathcomp.axiom string, \n  att short.type string, att short.pack st=
ring, att infer attmap, \n  att key string, att arg_sort bool, att log bool=
, att log.raw bool, \n  att compress_coercions bool, att export bool, att s=
kip string, \n  att local bool, att fail bool, att doc string, att primitiv=
e_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, a=
tt hnf bool] (c0 \\\n c1 \\ c1 =3D 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 k=
ey string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att c=
ompress_coercions bool, att export bool, att skip string, \n  att local boo=
l, att fail bool, att doc string, att primitive_class bool, \n  att primiti=
ve bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c=
1 =3D supported-attribute c0) X6",
+                "goal_text": "std.map\n [att mathcomp bool, att mathcomp.a=
xiom string, att short.type string, \n  att short.pack string, att infer at=
tmap, 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  at=
t 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 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 sh=
ort.type string, \n  att short.pack string, att infer attmap, att key strin=
g, \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 f=
ail bool, att doc string, att primitive_class bool, \n  att primitive bool,=
 att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D su=
pported-attribute c0) X6",
+        "current_goal_text": "std.map\n [att mathcomp bool, att mathcomp.a=
xiom string, att short.type string, \n  att short.pack string, att infer at=
tmap, 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  at=
t 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 =3D 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 st=
ring, 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 d=
oc string, \n  att primitive_class bool, att primitive bool, \n  att non_fo=
rgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supported-att=
ribute c0) X8",
+                "goal_text": "std.map\n [att mathcomp.axiom string, att sh=
ort.type string, att short.pack string, \n  att infer attmap, att key strin=
g, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coer=
cions 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 =3D su=
pported-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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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, at=
t short.pack string, \n  att infer attmap, att key string, att arg_sort boo=
l, att log bool, \n  att log.raw bool, att compress_coercions bool, att exp=
ort bool, \n  att skip string, att local bool, att fail bool, att doc strin=
g, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_=
inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supported-attribute c=
0) X8",
+        "current_goal_text": "std.map\n [att mathcomp.axiom string, att sh=
ort.type string, att short.pack string, \n  att infer attmap, att key strin=
g, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coer=
cions 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 =3D su=
pported-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 =3D supported-attribute (att mathcomp.axiom string)",
+                "goal_text": "X9 =3D supported-attribute (att mathcomp.axi=
om 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, at=
t 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_cl=
ass bool, \n  att primitive bool, att non_forgetful_inheritance bool, att h=
nf bool] (c0 \\\n c1 \\ c1 =3D 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 l=
og bool, att 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 p=
rimitive_class bool, \n  att primitive bool, att non_forgetful_inheritance =
bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute (att mathcomp.axiom string)",
+        "current_goal_text": "X9 =3D supported-attribute (att mathcomp.axi=
om string)",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1442,8 +1365,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 in=
fer attmap, \n  att key string, att arg_sort bool, att log bool, att log.ra=
w 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 =3D 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 l=
og bool, att 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 p=
rimitive_class bool, \n  att primitive bool, att non_forgetful_inheritance =
bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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 =3D supported-attribute (att short.type string)",
+                "goal_text": "X11 =3D 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 b=
ool, att fail bool, att doc string, att primitive_class bool, \n  att primi=
tive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\=
 c1 =3D 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 bo=
ol, \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 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute (att short.type string)",
+        "current_goal_text": "X11 =3D supported-attribute (att short.type =
string)",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1826,8 +1729,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 str=
ing, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compres=
s_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 boo=
l, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D =
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 bo=
ol, \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 =3D 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 =3D supported-attribute (att short.pack string)",
+                "goal_text": "X13 =3D supported-attribute (att short.pack =
string)",
                 "goal_id": 1141
               },
               {
-                "goal_text":
-                  "std.map\n [att infer attmap, att key string, att arg_so=
rt bool, att log bool, \n  att log.raw bool, att compress_coercions bool, a=
tt 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_forg=
etful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supported-attri=
bute 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_coerci=
ons bool, att export bool, \n  att skip string, att local bool, att fail bo=
ol, att doc string, \n  att primitive_class bool, att primitive bool, \n  a=
tt non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supp=
orted-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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute (att short.pack string)",
+        "current_goal_text": "X13 =3D supported-attribute (att short.pack =
string)",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -2250,8 +2131,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 expor=
t 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_in=
heritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D 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_coerci=
ons bool, att export bool, \n  att skip string, att local bool, att fail bo=
ol, att doc string, \n  att primitive_class bool, att primitive bool, \n  a=
tt non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supp=
orted-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 b=
ool, att log.raw bool, \n  att compress_coercions bool, att export bool, at=
t skip string, \n  att local bool, att fail bool, att doc string, att primi=
tive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool=
, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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 expo=
rt 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_inher=
itance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X1=
6",
                 "goal_id": 1144
               }
             ],
@@ -2484,8 +2353,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 s=
tring, \n  att local bool, att fail bool, att doc string, att primitive_cla=
ss bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hn=
f bool] (c0 \\\n c1 \\ c1 =3D 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 expo=
rt 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_inher=
itance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X1=
6",
         "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 =3D 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 ski=
p 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 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 l=
ocal 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 =3D 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 ski=
p 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 =3D 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 =
=3D supported-attribute c0) X20",
+                "goal_text": "std.map\n [att log bool, att log.raw bool, a=
tt 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 pri=
mitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c=
1 \\\n c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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_coercio=
ns bool, \n  att export bool, att skip string, att local bool, att fail boo=
l, \n  att doc string, att primitive_class bool, att primitive bool, \n  at=
t non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D suppo=
rted-attribute c0) X20",
+        "current_goal_text": "std.map\n [att log bool, att log.raw bool, a=
tt 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 pri=
mitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c=
1 \\\n c1 =3D 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 boo=
l, 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 =3D supported-a=
ttribute c0) X22",
+                "goal_text": "std.map\n [att log.raw bool, att compress_co=
ercions bool, att export bool, \n  att skip string, att local bool, att fai=
l 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 =3D =
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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 e=
xport bool, \n  att skip string, att local bool, att fail bool, att doc str=
ing, \n  att primitive_class bool, att primitive bool, \n  att non_forgetfu=
l_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supported-attribute=
 c0) X22",
+        "current_goal_text": "std.map\n [att log.raw bool, att compress_co=
ercions bool, att export bool, \n  att skip string, att local bool, att fai=
l 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 =3D =
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 p=
rimitive_class bool, \n  att primitive bool, att non_forgetful_inheritance =
bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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 st=
ring, att primitive_class bool, \n  att primitive bool, att non_forgetful_i=
nheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 sk=
ip string, \n  att local bool, att fail bool, att doc string, att primitive=
_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, at=
t hnf bool] (c0 \\\n c1 \\ c1 =3D 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 st=
ring, att primitive_class bool, \n  att primitive bool, att non_forgetful_i=
nheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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 =3D supported-attribute (att compress_coercions boo=
l)",
+                "goal_text": "X25 =3D supported-attribute (att compress_co=
ercions 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 prim=
itive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1=
 \\\n c1 =3D 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 boo=
l, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool=
] (c0 \\ c1 \\\n c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute (att compress_coercions bool)",
+        "current_goal_text": "X25 =3D supported-attribute (att compress_co=
ercions bool)",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -5611,8 +5328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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, at=
t fail bool, \n  att doc string, att primitive_class bool, att primitive bo=
ol, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1=
 =3D 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 boo=
l, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool=
] (c0 \\ c1 \\\n c1 =3D 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 bo=
ol, att doc string, \n  att primitive_class bool, att primitive bool, \n  a=
tt non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supp=
orted-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 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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_f=
orgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D supported-at=
tribute 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 =3D 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 strin=
g, att primitive_class bool, \n  att primitive bool, att non_forgetful_inhe=
ritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X=
30",
+                "goal_text": "std.map\n [att local bool, att fail bool, at=
t doc string, att primitive_class bool, \n  att primitive bool, att non_for=
getful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attr=
ibute c0) X30",
                 "goal_id": 1158
               }
             ],
@@ -6684,8 +6348,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 p=
rimitive_class bool, \n  att primitive bool, att non_forgetful_inheritance =
bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X30",
+        "current_goal_text": "std.map\n [att local bool, att fail bool, at=
t doc string, att primitive_class bool, \n  att primitive bool, att non_for=
getful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attr=
ibute 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, at=
t hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X32",
+                "goal_text": "std.map\n [att fail bool, att doc string, at=
t primitive_class bool, \n  att primitive bool, att non_forgetful_inheritan=
ce bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 b=
ool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bo=
ol] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X32",
+        "current_goal_text": "std.map\n [att fail bool, att doc string, at=
t primitive_class bool, \n  att primitive bool, att non_forgetful_inheritan=
ce bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D 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, at=
t primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0=
 \\ c1 \\\n c1 =3D supported-attribute c0) X34",
+                "goal_text": "std.map\n [att doc string, att primitive_cla=
ss bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hn=
f bool] (c0 \\ c1 \\\n c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 primit=
ive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \=
\\n c1 =3D supported-attribute c0) X34",
+        "current_goal_text": "std.map\n [att doc string, att primitive_cla=
ss bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hn=
f bool] (c0 \\ c1 \\\n c1 =3D 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 =
=3D supported-attribute c0) X36",
+                "goal_text": "std.map\n [att primitive_class bool, att pri=
mitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c=
1 \\\n c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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  at=
t non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 =3D suppo=
rted-attribute c0) X36",
+        "current_goal_text": "std.map\n [att primitive_class bool, att pri=
mitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c=
1 \\\n c1 =3D 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 =3D supported-attribute (att primitive_class bool)",
+                "goal_text": "X37 =3D supported-attribute (att primitive_c=
lass bool)",
                 "goal_id": 1165
               },
               {
-                "goal_text":
-                  "std.map\n [att primitive bool, att non_forgetful_inheri=
tance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X38=
",
+                "goal_text": "std.map\n [att primitive bool, att non_forge=
tful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attrib=
ute c0) X38",
                 "goal_id": 1166
               }
             ],
@@ -9961,8 +9464,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute (att primitive_class bool)",
+        "current_goal_text": "X37 =3D supported-attribute (att primitive_c=
lass bool)",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -10410,8 +9891,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 bo=
ol, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attribute c0) X38",
+        "current_goal_text": "std.map\n [att primitive bool, att non_forge=
tful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 =3D supported-attrib=
ute 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 bo=
ol] (c0 \\ c1 \\\n c1 =3D supported-attribute c0) X40",
+                "goal_text": "std.map [att non_forgetful_inheritance bool,=
 att hnf bool] (c0 \\ c1 \\\n c1 =3D 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute c0) X40",
+        "current_goal_text": "std.map [att non_forgetful_inheritance bool,=
 att hnf bool] (c0 \\ c1 \\\n c1 =3D 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 =3D supported-attribute (att non_forgetful_inherita=
nce bool)",
+                "goal_text": "X41 =3D supported-attribute (att non_forgetf=
ul_inheritance bool)",
                 "goal_id": 1169
               },
               {
-                "goal_text":
-                  "std.map [att hnf bool] (c0 \\ c1 \\ c1 =3D supported-at=
tribute c0) X42",
+                "goal_text": "std.map [att hnf bool] (c0 \\ c1 \\ c1 =3D s=
upported-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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute (att non_forgetful_inheritance bool=
)",
+        "current_goal_text": "X41 =3D supported-attribute (att non_forgetf=
ul_inheritance bool)",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -12332,8 +11717,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute =
c0) X42",
+        "current_goal_text": "std.map [att hnf bool] (c0 \\ c1 \\ c1 =3D s=
upported-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 =3D supported-attribute c0) =
X44",
+                "goal_text": "std.map [] (c0 \\ c1 \\ c1 =3D supported-att=
ribute c0) X44",
                 "goal_id": 1172
               }
             ],
@@ -12843,8 +12202,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D supported-attribute c0) X44",
+        "current_goal_text": "std.map [] (c0 \\ c1 \\ c1 =3D supported-att=
ribute 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-attrib=
ute (att export bool), \n supported-attribute (att skip string), \n support=
ed-attribute (att local bool), supported-attribute (att fail bool), \n supp=
orted-attribute (att doc string), \n supported-attribute (att primitive_cla=
ss bool), \n supported-attribute (att primitive bool), \n supported-attribu=
te (att non_forgetful_inheritance bool), \n supported-attribute (att hnf bo=
ol)] =3D>\n parse-attributes.aux\n  [attribute elpi.loc \n    (leaf-loc Fil=
e \"(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 mathco=
mp.axiom string), \n supported-attribute (att short.type string), \n suppor=
ted-attribute (att short.pack string), \n supported-attribute (att infer at=
tmap), \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-at=
tribute (att hnf bool)] =3D>\n parse-attributes.aux\n  [attribute elpi.loc =
\n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -14371,8 +13656,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "parse-attributes.aux\n [attribute elpi.loc \n   (leaf-l=
oc 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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A5 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A5 =3D A0) \n                                      =
                          (A5 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A5 att=
map)), (!), \n (parse-attributes.aux A2 A3 A6), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D ) (A6 =3D 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 =3D )=
 (A6 =3D 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 =3D ) (A5 =3D A0) (A5 is A3 ^ . ^ A0)), \n (coq.=
valid-str-attribute A5 A1 A6 A7), \n (if (A7 =3D error A8) (coq.error A8) t=
rue), \n (if (A6 =3D some A9) (A4 =3D [get-option A5 A9 | A10]) (A4 =3D A10=
)), \n (parse-attributes.aux A2 A3 A10).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (leaf-st=
r A1) | A2] A3 A4) :- (!), \n (if (A3 =3D ) (A5 =3D A0) (A5 is A3 ^ . ^ A0)=
), \n (coq.valid-str-attribute A5 A1 A6 A7), \n (if (A7 =3D error A8) (coq.=
error A8) true), \n (if (A6 =3D some A9) (A4 =3D [get-option A5 A9 | A10]) =
(A4 =3D 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 =3D ) (A5 =3D A0) (A5 is A3 ^ . ^ A0)), \n (coq.=
valid-loc-attribute A5 A1 A6), \n (if (A6 =3D error A7) (coq.error A7) true=
), (A4 =3D [get-option A5 A1 | A8]), \n (parse-attributes.aux A2 A3 A8).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (leaf-lo=
c A1) | A2] A3 A4) :- (!), \n (if (A3 =3D ) (A5 =3D A0) (A5 is A3 ^ . ^ A0)=
), \n (coq.valid-loc-attribute A5 A1 A6), \n (if (A6 =3D error A7) (coq.err=
or A7) true), (A4 =3D [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] A=
3 A4) :- (if (A3 =3D ) \n                                                  =
              (A7 =3D 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) :- !)) =3D>\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 =3D ) \n                                       =
                         (A7 =3D A0) \n                                    =
                            (A7 is\n                                       =
                           A3 ^ . ^ A0)), \n (supported-attribute (att A7 a=
ttmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-=
attribute (att c0 string) :- !)) =3D>\n   parse-attributes.aux A1  A6), (st=
d.append A5 [get-option A7 A6] A4).",
                   "rule_loc": [ "Context", 6 ]
                 }
               ],
@@ -14599,13 +13873,11 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1174 },
               {
-                "goal_text":
-                  "if ( =3D ) (X45 =3D elpi.loc) (X45 is  ^ . ^ elpi.loc)",
+                "goal_text": "if ( =3D ) (X45 =3D elpi.loc) (X45 is  ^ . ^=
 elpi.loc)",
                 "goal_id": 1175
               },
               {
-                "goal_text":
-                  "coq.valid-loc-attribute X45 File \"(stdin)\", line 1, c=
olumn 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 =3D [get-option X45 File \"(stdin)\", line 1, column=
 2, character 3: | X48]",
+                "goal_text": "X3 =3D [get-option X45 File \"(stdin)\", lin=
e 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 ( =3D ) (X45 =3D elpi.loc) (X45 is  ^ . ^ elpi.loc)",
+        "current_goal_text": "if ( =3D ) (X45 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 ( =3D ) (X45 =3D elpi.loc) (X45 is  ^ . ^ elpi.loc)",
+              "goal_text": "if ( =3D ) (X45 =3D elpi.loc) (X45 is  ^ . ^ e=
lpi.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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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, c=
olumn 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 (prim=
itive? A1 Loc.t) (A2 =3D ok) \n                                          ((=
std.any->string A1 A4 ,\n                                             calc\=
n                                              (Attribute  ^ A0 ^\n        =
                                         takes a loc, got  ^ A4) A5)\n     =
                                       , A2 =3D error A5)) \n              =
                          (if\n                                          (s=
upported-attribute\n                                            att-ignore-=
unknown) (A2 =3D ok) \n                                          (calc\n   =
                                         (Attribute  ^ A0 ^\n              =
                                 is not supported) A3 ,\n                  =
                          A2 =3D error A3))).",
+                  "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if =
(supported-attribute (att A0 loc)) \n                                      =
  (if (primitive? A1 Loc.t) (A2 =3D ok) \n                                 =
         ((std.any->string A1 A4 ,\n                                       =
      calc\n                                              (Attribute  ^ A0 =
^\n                                                 takes a loc, got  ^ A4)=
 A5)\n                                            , A2 =3D error A5)) \n   =
                                     (if\n                                 =
         (supported-attribute\n                                            =
att-ignore-unknown) (A2 =3D ok) \n                                         =
 (calc\n                                            (Attribute  ^ A0 ^\n   =
                                            is not supported) A3 ,\n       =
                                     A2 =3D error A3))).",
                   "rule_loc": [
                     "File",
                     {
@@ -15233,8 +14480,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (supported-attribute (att elpi.loc loc)) \n (if (pri=
mitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 =
=3D ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, characte=
r 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X=
50) ,\n     X46 =3D error X50)) \n (if (supported-attribute att-ignore-unkn=
own) (X46 =3D ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X5=
1 , X46 =3D 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 =3D 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 =3D error X50)) \n (if (supported-attribute att-i=
gnore-unknown) (X46 =3D ok) \n   (calc (Attribute  ^ elpi.loc ^  is not sup=
ported) X51 , X46 =3D error X51))",
                 "goal_id": 1183
               }
             ],
@@ -15247,8 +14493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D 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 =3D error X50)) \n (if (supported-attribute att-ignore-unknown) (X46=
 =3D ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 =
=3D 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 =3D 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 =3D error X50)) \n (if (supported-attribute att-i=
gnore-unknown) (X46 =3D ok) \n   (calc (Attribute  ^ elpi.loc ^  is not sup=
ported) X51 , X46 =3D 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, char=
acter 3: Loc.t) \n (X46 =3D 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 =3D error X50)",
+                "goal_text": "if (primitive? File \"(stdin)\", line 1, col=
umn 2, character 3: Loc.t) \n (X46 =3D ok) \n ((std.any->string File \"(std=
in)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.lo=
c ^  takes a loc, got  ^ X49) X50) ,\n   X46 =3D error X50)",
                 "goal_id": 1186
               }
             ],
@@ -15433,8 +14671,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 str=
ing)) :- .",
                 "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 bo=
ol)) :- .",
                 "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 boo=
l)) :- .",
+                "rule_text": "(supported-attribute (att non_forgetful_inhe=
ritance 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-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (primi=
tive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 =3D=
 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 =3D error X50)) \n (if (supported-attribute att-ignore-unknown=
) (X46 =3D ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 ,=
 X46 =3D 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 =3D 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 =3D error X50)) \n (if (supported-attribute att-ign=
ore-unknown) (X46 =3D ok) \n   (calc (Attribute  ^ elpi.loc ^  is not suppo=
rted) X51 , X46 =3D 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 =3D ok) \n ((std.any->string File \"(stdin)\", line 1, colu=
mn 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, g=
ot  ^ X49) X50) ,\n   X46 =3D error X50)",
+        "current_goal_text": "if (primitive? File \"(stdin)\", line 1, col=
umn 2, character 3: Loc.t) \n (X46 =3D ok) \n ((std.any->string File \"(std=
in)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.lo=
c ^  takes a loc, got  ^ X49) X50) ,\n   X46 =3D error X50)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -16072,8 +15287,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "primitive? File \"(stdin)\", line 1, column 2, characte=
r 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-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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: (ctyp=
e 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-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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, charac=
ter 3: Loc.t) \n (X46 =3D 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 =3D error X50)",
+              "goal_text": "if (primitive? File \"(stdin)\", line 1, colum=
n 2, character 3: Loc.t) \n (X46 =3D 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 =3D error X50)",
               "goal_id": 1186
             },
             "cut_branch": {
@@ -16961,8 +16143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-at=
tribute (att A0 loc)) \n                                        (if (primit=
ive? A1 Loc.t) (A2 =3D ok) \n                                          ((st=
d.any->string A1 A4 ,\n                                             calc\n =
                                             (Attribute  ^ A0 ^\n          =
                                       takes a loc, got  ^ A4) A5)\n       =
                                     , A2 =3D error A5)) \n                =
                        (if\n                                          (sup=
ported-attribute\n                                            att-ignore-un=
known) (A2 =3D ok) \n                                          (calc\n     =
                                       (Attribute  ^ A0 ^\n                =
                               is not supported) A3 ,\n                    =
                        A2 =3D error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (s=
upported-attribute (att A0 loc)) \n                                        =
(if (primitive? A1 Loc.t) (A2 =3D ok) \n                                   =
       ((std.any->string A1 A4 ,\n                                         =
    calc\n                                              (Attribute  ^ A0 ^\=
n                                                 takes a loc, got  ^ A4) A=
5)\n                                            , A2 =3D error A5)) \n     =
                                   (if\n                                   =
       (supported-attribute\n                                            at=
t-ignore-unknown) (A2 =3D ok) \n                                          (=
calc\n                                            (Attribute  ^ A0 ^\n     =
                                          is not supported) A3 ,\n         =
                                   A2 =3D 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D\n [get-option elpi.loc File \"(stdin)\", line 1, column =
2, character 3: | X48]",
+        "current_goal_text": "X3 =3D\n [get-option elpi.loc File \"(stdin)=
\", line 1, column 2, character 3: | X48]",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -17712,8 +16867,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 =
A4) :- (if (A3 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ) \n                                                    =
            (A7 =3D 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 (at=
t c0 string) :- !)) =3D>\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 =3D ) \n                                         =
                       (A7 =3D A0) \n                                      =
                          (A7 is\n                                         =
                         A3 ^ . ^ A0)), \n (supported-attribute (att A7 att=
map)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-at=
tribute (att c0 string) :- !)) =3D>\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 =3D supported-attribute c0)=
)) A3), \n (A3 =3D> parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map =
A1 (c0 \\ (c1 \\\n                                     (c1 =3D supported-at=
tribute c0))) A3), \n (A3 =3D> 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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, charac=
ter 3:] =3D>\n (save-docstring ,\n   with-logging\n    (instance.declare-co=
nst _ \n      (app\n        [global (const =C2=ABIsSelfA'.phant_Build=C2=BB=
), global (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=BB), f=
un `x` X0 c0 \\ c0]) (arity X1) _))",
+        "current_goal_text": "[get-option elpi.loc File \"(stdin)\", line =
1, column 2, character 3:] =3D>\n (save-docstring ,\n   with-logging\n    (=
instance.declare-const _ \n      (app\n        [global (const =C2=ABIsSelfA=
'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (ind=
c =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _))",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -17980,8 +17124,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "save-docstring ,\n with-logging\n  (instance.declare-co=
nst _ \n    (app\n      [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x`=
 X0 c0 \\ c0]) (arity X1) _)",
+                "goal_text": "save-docstring ,\n with-logging\n  (instance=
.declare-const _ \n    (app\n      [global (const =C2=ABIsSelfA'.phant_Buil=
d=C2=BB), global (indt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=
=BB), 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (i=
ndt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \=
\ c0]) (arity X1) _)",
+        "current_goal_text": "save-docstring ,\n with-logging\n  (instance=
.declare-const _ \n    (app\n      [global (const =C2=ABIsSelfA'.phant_Buil=
d=C2=BB), global (indt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=
=BB), 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity =
X1) _)",
+                "goal_text": "with-logging\n (instance.declare-const _ \n =
  (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-o=
ption 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 (a=
cc-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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-claus=
e _ (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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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)\", lin=
e 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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-claus=
e _ (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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-opt=
ion doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A=
0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1=
)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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     [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "with-logging\n (instance.declare-const _ \n =
  (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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 =
=3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D 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.conca=
t \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_ou=
t A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-close A8)=
, (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.p=
p.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11)=
.",
+                  "rule_text": "(with-logging A0) :- (get-option elpi.hb.l=
og _ , A1 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A=
1 =3D 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.st=
ring.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7),=
 (close_out A6), (log.private.logger A8 A1 =3D> 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), (clos=
e_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 =3D tt ; get-option elpi=
.hb.log.raw _ , X54 =3D ff",
+                "goal_text": "get-option elpi.hb.log _ , X54 =3D tt ; get-=
option elpi.hb.log.raw _ , X54 =3D 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 PA=
TCH 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 =3D>\n instance.declare-cons=
t _ \n  (app\n    [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n     global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \=
\ c0]) (arity X1) _",
+                "goal_text": "log.private.logger X61 X54 =3D>\n instance.d=
eclare-const _ \n  (app\n    [global (const =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n     global (indc =C2=ABO=C2=BB), fu=
n `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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ; get-option elpi.hb.log.=
raw _ , X54 =3D ff",
+        "current_goal_text": "get-option elpi.hb.log _ , X54 =3D tt ; get-=
option elpi.hb.log.raw _ , X54 =3D 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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ; get-option elpi.hb.log.=
raw _ , X54 =3D ff",
+        "current_goal_text": "get-option elpi.hb.log _ , X54 =3D tt ; get-=
option elpi.hb.log.raw _ , X54 =3D 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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D=
 tt ;\n                       get-option elpi.hb.log.raw _ , A1 =3D ff), (!=
), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->st=
ring 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 A=
6), (log.private.logger A8 A1 =3D> 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 =3D tt ;\n                       get-option elpi.hb.log.raw _ , A1 =
=3D 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.stri=
ng.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (=
close_out A6), (log.private.logger A8 A1 =3D> A0), \n (log.private.logger-c=
lose A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.bo=
x (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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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     [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "with-logging\n (instance.declare-const _ \n =
  (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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 =3D tt ;=
\n                       get-option log.raw tt , A1 =3D ff), (!), \n (log.p=
rivate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.inters=
perse 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 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!)=
, \n (log.private.logger A2 A1 =3D> 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 =3D tt ; get-option log.raw tt =
, X65 =3D ff",
+                "goal_text": "get-option log tt , X65 =3D tt ; get-option =
log.raw tt , X65 =3D ff",
                 "goal_id": 1229
               },
               { "goal_text": "!", "goal_id": 1230 },
               {
-                "goal_text":
-                  "log.private.logger X66 X65 =3D>\n instance.declare-cons=
t _ \n  (app\n    [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n     global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \=
\ c0]) (arity X1) _",
+                "goal_text": "log.private.logger X66 X65 =3D>\n instance.d=
eclare-const _ \n  (app\n    [global (const =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n     global (indc =C2=ABO=C2=BB), fu=
n `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 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ; get-option log.raw tt , X65 =
=3D ff",
+        "current_goal_text": "get-option log tt , X65 =3D tt ; get-option =
log.raw tt , X65 =3D ff",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -20291,13 +19328,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ; get-option log.raw tt , X65 =
=3D ff",
+        "current_goal_text": "get-option log tt , X65 =3D tt ; get-option =
log.raw tt , X65 =3D ff",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -20686,13 +19707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt ;\n=
                       get-option log.raw tt , A1 =3D ff), (!), \n (log.pri=
vate.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (std.interspe=
rse 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=
 =3D tt ;\n                       get-option log.raw tt , A1 =3D ff), (!), =
\n (log.private.logger A2 A1 =3D> A0), (log.private.logger-close A2), \n (s=
td.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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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     [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "with-logging\n (instance.declare-const _ \n =
  (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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 =C2=
=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global=
 (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _",
+                "goal_text": "instance.declare-const _ \n (app\n   [global=
 (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n    global (indc =C2=ABO=C2=BB), 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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSel=
fA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =
=C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (arity X1) _",
+        "current_goal_text": "instance.declare-const _ \n (app\n   [global=
 (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n    global (indc =C2=ABO=C2=BB), 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 =3D arity A7) \n                                            (=
if-verbose\n                                              (coq.say\n       =
                                         HB: skipping section opening)\n   =
                                           , A8 =3D A6) \n                 =
                           (,\n                                            =
  (, (new_int A21) \n                                                (std.a=
ny->string A21 A22) \n                                                (A9 i=
s hb_instance_ ^ A22)) \n                                              (log=
.coq.env.begin-section A9) \n                                              =
(instance.private.postulate-arity\n                                        =
        A4 [] A6 A8 A7)), \n                                           std.=
assert!\n                                            (coq.safe-dest-app A7 =
\n                                              (global A10) A11) \n       =
                                     The type of the instance is not a fact=
ory, \n                                           factory-alias->gref A10 A=
12, \n                                           std.assert!\n             =
                               (factory-nparams A12 A13) \n                =
                            Not a factory synthesized by HB, \n            =
                               instance.private.hack-section-discharging\n =
                                           A8 A14, \n                      =
                     instance.private.optimize-body\n                      =
                      A14 A15, \n                                          =
 if (A0 =3D _) \n                                            (, (new_int A2=
3) \n                                              (std.any->string A23 A24=
) \n                                              (A16 is\n                =
                                HB_unnamed_factory_ ^ A24)) \n             =
                               (A16 =3D A0), \n                            =
               log.coq.env.add-const-noimplicits-failondup\n               =
                             A16 A15 A7 ff A17, \n                         =
                  A18 =3D global (const A17), \n                           =
                std.drop A13 A11 [A19 | _], \n                             =
              instance.private.check-non-forgetful-inheritance\n           =
                                 A19 A12, \n                               =
            instance.private.declare-instance\n                            =
                A12 A19 A18 A20 A3, \n                                     =
      if (A4 =3D arity _) true \n                                          =
  (if-verbose\n                                              (header A25 ,\=
n                                                coq.say A25 \n            =
                                     closing instance section) ,\n         =
                                     log.coq.env.end-section-name A9), \n  =
                                         acc-clauses current A20]).",
+                  "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (s=
td.do!\n                                          [std.assert-ok!\n        =
                                    (coq.elaborate-arity-skeleton A2 \n    =
                                          _ A4) Definition type illtyped, \=
n                                           coq.arity->term A4 A5, \n      =
                                     std.assert-ok!\n                      =
                      (coq.elaborate-skeleton A1 A5 A6) \n                 =
                           Definition illtyped, \n                         =
                  if (A4 =3D arity A7) \n                                  =
          (if-verbose\n                                              (coq.s=
ay\n                                                HB: skipping section op=
ening)\n                                              , A8 =3D A6) \n      =
                                      (,\n                                 =
             (, (new_int A21) \n                                           =
     (std.any->string A21 A22) \n                                          =
      (A9 is hb_instance_ ^ A22)) \n                                       =
       (log.coq.env.begin-section A9) \n                                   =
           (instance.private.postulate-arity\n                             =
                   A4 [] A6 A8 A7)), \n                                    =
       std.assert!\n                                            (coq.safe-d=
est-app A7 \n                                              (global A10) A11=
) \n                                            The type of the instance is=
 not a factory, \n                                           factory-alias-=
>gref A10 A12, \n                                           std.assert!\n  =
                                          (factory-nparams A12 A13) \n     =
                                       Not a factory synthesized by HB, \n =
                                          instance.private.hack-section-dis=
charging\n                                            A8 A14, \n           =
                                instance.private.optimize-body\n           =
                                 A14 A15, \n                               =
            if (A0 =3D _) \n                                            (, =
(new_int A23) \n                                              (std.any->str=
ing A23 A24) \n                                              (A16 is\n     =
                                           HB_unnamed_factory_ ^ A24)) \n  =
                                          (A16 =3D A0), \n                 =
                          log.coq.env.add-const-noimplicits-failondup\n    =
                                        A16 A15 A7 ff A17, \n              =
                             A18 =3D global (const A17), \n                =
                           std.drop A13 A11 [A19 | _], \n                  =
                         instance.private.check-non-forgetful-inheritance\n=
                                            A19 A12, \n                    =
                       instance.private.declare-instance\n                 =
                           A12 A19 A18 A20 A3, \n                          =
                 if (A4 =3D arity _) true \n                               =
             (if-verbose\n                                              (he=
ader A25 ,\n                                                coq.say A25 \n =
                                                closing instance section) ,=
\n                                              log.coq.env.end-section-nam=
e A9), \n                                           acc-clauses current A20=
]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n =
       global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X71) \n   Def=
inition illtyped, \n  if (X69 =3D arity X72) \n   (if-verbose (coq.say HB: =
skipping section opening) , X73 =3D X71) \n   (,\n     (, (new_int X74) (st=
d.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.beg=
in-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.asse=
rt! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance=
.private.hack-section-discharging X73 X81, \n  instance.private.optimize-bo=
dy X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84=
) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.a=
dd-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D global (cons=
t X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetfu=
l-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X8=
9 X90, \n  if (X69 =3D arity _) true \n   (if-verbose (header X91 , coq.say=
 X91 closing instance section) ,\n     log.coq.env.end-section-name X76), a=
cc-clauses current X89]",
+                "goal_text": "std.do!\n [std.assert-ok! (coq.elaborate-ari=
ty-skeleton (arity X1) _ X69) \n   Definition type illtyped, coq.arity->ter=
m X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n     =
  [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X=
71) \n   Definition illtyped, \n  if (X69 =3D arity X72) \n   (if-verbose (=
coq.say HB: skipping section opening) , X73 =3D 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 (_ =3D _) \n   (, (new_int X83) (std.any->st=
ring X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  l=
og.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D =
global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-=
non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X7=
9 X88 X87 X89 X90, \n  if (X69 =3D arity _) true \n   (if-verbose (header X=
91 , 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =
=C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n       =
 global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definitio=
n illtyped, \n  if (X69 =3D arity X72) \n   (if-verbose (coq.say HB: skippi=
ng section opening) , X73 =3D X71) \n   (,\n     (, (new_int X74) (std.any-=
>string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-sec=
tion 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! (f=
actory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.priva=
te.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81=
 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n  =
   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-con=
st-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D global (const X86)=
, std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inhe=
ritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90,=
 \n  if (X69 =3D arity _) true \n   (if-verbose (header X91 , coq.say X91 c=
losing instance section) ,\n     log.coq.env.end-section-name X76), acc-cla=
uses current X89]",
+        "current_goal_text": "std.do!\n [std.assert-ok! (coq.elaborate-ari=
ty-skeleton (arity X1) _ X69) \n   Definition type illtyped, coq.arity->ter=
m X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n     =
  [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X=
71) \n   Definition illtyped, \n  if (X69 =3D arity X72) \n   (if-verbose (=
coq.say HB: skipping section opening) , X73 =3D 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 (_ =3D _) \n   (, (new_int X83) (std.any->st=
ring X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  l=
og.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D =
global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-=
non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X7=
9 X88 X87 X89 X90, \n  if (X69 =3D arity _) true \n   (if-verbose (header X=
91 , 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! A=
1).",
                   "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 =C2=ABIsSelfA=
'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc=
 =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \=
n  if (X69 =3D arity X72) \n   (if-verbose (coq.say HB: skipping section op=
ening) , X73 =3D X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X=
75) (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-nparam=
s X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-secti=
on-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if =
(_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB=
_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicit=
s-failondup X85 X82 X72 ff X86, \n  X87 =3D global (const X86), std.drop X8=
0 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X=
79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 =
=3D arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instan=
ce 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 =
=C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n       =
 global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definitio=
n illtyped, \n  if (X69 =3D arity X72) \n   (if-verbose (coq.say HB: skippi=
ng section opening) , X73 =3D X71) \n   (,\n     (, (new_int X74) (std.any-=
>string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-sec=
tion 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! (f=
actory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.priva=
te.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81=
 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n  =
   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-con=
st-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D global (const X86)=
, std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inhe=
ritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90,=
 \n  if (X69 =3D arity _) true \n   (if-verbose (header X91 , coq.say X91 c=
losing instance section) ,\n     log.coq.env.end-section-name X76), acc-cla=
uses 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok=
 ; A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n=
 (A2 =3D ok ; A2 =3D 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) _ X6=
9 X92",
                 "goal_id": 1247
               },
               { "goal_text": "!", "goal_id": 1248 },
               {
-                "goal_text":
-                  "X92 =3D ok ;\n X92 =3D error X93 , std.fatal-error-w-da=
ta Definition type illtyped X93",
+                "goal_text": "X92 =3D ok ;\n X92 =3D 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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) _ X6=
9 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) A=
1 (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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D X96", "goal_id": 1253 },
               {
-                "goal_text":
-                  "declare-evar [] (X97) (sort (typ =C2=ABinterleave_conte=
xt.403=C2=BB)) (X96)",
+                "goal_text": "declare-evar [] (X97) (sort (typ =C2=ABinter=
leave_context.403=C2=BB)) (X96)",
                 "goal_id": 1254
               },
               { "goal_text": "X92 =3D 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleave_context.403=
=C2=BB)) (X96)",
+        "current_goal_text": "declare-evar [] (X97) (sort (typ =C2=ABinter=
leave_context.403=C2=BB)) (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 (de=
clare-evar A0 A1 A2 A3) \n                                [A1]).",
+                  "rule_text": "(declare-evar A0 A1 A2 A3) :- (declare_con=
straint (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 =
=C2=ABinterleave_context.403=C2=BB)) (X96)) [\n X97]",
+                "goal_text": "declare_constraint\n (declare-evar [] (X97) =
(sort (typ =C2=ABinterleave_context.403=C2=BB)) (X96)) [\n X97]",
                 "goal_id": 1256
               }
             ],
@@ -22528,8 +21457,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(declare-evar A0 A1 A2 A3) :- (declare_constraint (decl=
are-evar A0 A1 A2 A3) \n                                [A1]).",
+                "rule_text": "(declare-evar A0 A1 A2 A3) :- (declare_const=
raint (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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABin=
terleave_context.403=C2=BB)) (X96)) [\n X97]",
+        "suspend_goal_text": "declare_constraint\n (declare-evar [] (X97) =
(sort (typ =C2=ABinterleave_context.403=C2=BB)) (X96)) [\n X97]",
         "suspend_sibling": {
-          "goal_text":
-            "declare-evar [] (X97) (sort (typ =C2=ABinterleave_context.403=
=C2=BB)) (X96)",
+          "goal_text": "declare-evar [] (X97) (sort (typ =C2=ABinterleave_=
context.403=C2=BB)) (X96)",
           "goal_id": 1257
         },
         "suspend_stack": [
@@ -22734,8 +21652,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(declare-evar A0 A1 A2 A3) :- (declare_constraint (decl=
are-evar A0 A1 A2 A3) \n                                [A1]).",
+                "rule_text": "(declare-evar A0 A1 A2 A3) :- (declare_const=
raint (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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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)  <=3D> (A0 =3D> evar A1 A2=
 A3)",
+              "chr_text": " \\ (declare-evar A0 A1 A2 A3)  <=3D> (A0 =3D> =
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":
-                  "_ =3D> [] =3D> evar X97 (sort (typ =C2=ABinterleave_con=
text.403=C2=BB)) X96",
+                "goal_text": "_ =3D> [] =3D> evar X97 (sort (typ =C2=ABint=
erleave_context.403=C2=BB)) X96",
                 "goal_id": 1260
               }
             ]
@@ -23018,8 +21924,7 @@
         ],
         "chr_store_before": [
           {
-            "goal_text":
-              " declare-evar [] (X97) (sort (typ =C2=ABinterleave_context.=
403=C2=BB)) (X96)  /* suspended on X97 */",
+            "goal_text": " declare-evar [] (X97) (sort (typ =C2=ABinterlea=
ve_context.403=C2=BB)) (X96)  /* suspended on X97 */",
             "goal_id": 1257
           }
         ],
@@ -23035,8 +21940,7 @@
       "Inference",
       {
         "current_goal_id": 1260,
-        "current_goal_text":
-          "_ =3D> [] =3D> evar X97 (sort (typ =C2=ABinterleave_context.403=
=C2=BB)) X96",
+        "current_goal_text": "_ =3D> [] =3D> evar X97 (sort (typ =C2=ABint=
erleave_context.403=C2=BB)) X96",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23047,8 +21951,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "[] =3D> evar X97 (sort (typ =C2=ABinterleave_context.40=
3=C2=BB)) X96",
+                "goal_text": "[] =3D> evar X97 (sort (typ =C2=ABinterleave=
_context.403=C2=BB)) X96",
                 "goal_id": 1261
               }
             ],
@@ -23074,8 +21977,7 @@
       "Inference",
       {
         "current_goal_id": 1261,
-        "current_goal_text":
-          "[] =3D> evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)=
) X96",
+        "current_goal_text": "[] =3D> evar X97 (sort (typ =C2=ABinterleave=
_context.403=C2=BB)) X96",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23086,8 +21988,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)=
) X96",
+                "goal_text": "evar X97 (sort (typ =C2=ABinterleave_context=
.403=C2=BB)) X96",
                 "goal_id": 1262
               }
             ],
@@ -23118,8 +22019,7 @@
       "Inference",
       {
         "current_goal_id": 1262,
-        "current_goal_text":
-          "evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)) X96",
+        "current_goal_text": "evar X97 (sort (typ =C2=ABinterleave_context=
.403=C2=BB)) 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) (de=
clare_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 (ty=
p =C2=ABinterleave_context.403=C2=BB)) X96) \n   [X97, X96]) true",
+                "goal_text": "if (var X96) \n (declare_constraint (evar X9=
7 (sort (typ =C2=ABinterleave_context.403=C2=BB)) X96) \n   [X97, X96]) tru=
e",
                 "goal_id": 1264
               }
             ],
@@ -23164,8 +22062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =C2=ABinterleave_context.403=C2=BB)) =
X96",
+              "goal_text": "evar X97 (sort (typ =C2=ABinterleave_context.4=
03=C2=BB)) 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 =C2=AB=
interleave_context.403=C2=BB)) X96) \n   [X97, X96]) true",
+        "current_goal_text": "if (var X96) \n (declare_constraint (evar X9=
7 (sort (typ =C2=ABinterleave_context.403=C2=BB)) X96) \n   [X97, X96]) tru=
e",
         "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 =C2=ABinterleav=
e_context.403=C2=BB)) X96) \n [X97, X96]",
+                "goal_text": "declare_constraint (evar X97 (sort (typ =C2=
=ABinterleave_context.403=C2=BB)) 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =
=C2=ABinterleave_context.403=C2=BB)) X96) \n   [X97, X96]) true",
+              "goal_text": "if (var X96) \n (declare_constraint (evar X97 =
(sort (typ =C2=ABinterleave_context.403=C2=BB)) 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 =C2=ABinterleave_contex=
t.403=C2=BB)) X96) \n [X97, X96]",
+        "suspend_goal_text": "declare_constraint (evar X97 (sort (typ =C2=
=ABinterleave_context.403=C2=BB)) X96) \n [X97, X96]",
         "suspend_sibling": {
           "goal_text": "evar X97 (sort (typ =C2=ABinterleave_context.403=
=C2=BB)) X96",
           "goal_id": 1268
@@ -23487,8 +22377,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 di=
agnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-da=
ta A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -23751,8 +22630,7 @@
       "Inference",
       {
         "current_goal_id": 1249,
-        "current_goal_text":
-          "ok =3D ok ;\n ok =3D error X93 , std.fatal-error-w-data Definit=
ion type illtyped X93",
+        "current_goal_text": "ok =3D ok ;\n ok =3D error X93 , std.fatal-e=
rror-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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;\n X92 =3D error X93 , std.fatal-error-w-data=
 Definition type illtyped X93",
+              "goal_text": "X92 =3D ok ;\n X92 =3D error X93 , std.fatal-e=
rror-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 =C2=ABIsSel=
fA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (in=
dc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped,=
 \n  if (arity (X96) =3D arity X72) \n   (if-verbose (coq.say HB: skipping =
section opening) , X73 =3D X71) \n   (,\n     (, (new_int X74) (std.any->st=
ring X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-sectio=
n X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X7=
2)), \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.ass=
ert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instanc=
e.private.hack-section-discharging X73 X81, \n  instance.private.optimize-b=
ody X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X8=
4) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.=
add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D global (con=
st X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetf=
ul-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X=
89 X90, \n  if (arity (X96) =3D arity _) true \n   (if-verbose (header X91 =
, coq.say X91 closing instance section) ,\n     log.coq.env.end-section-nam=
e 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) X70 X71) \n   D=
efinition illtyped, \n  if (arity (X96) =3D arity X72) \n   (if-verbose (co=
q.say HB: skipping section opening) , X73 =3D X71) \n   (,\n     (, (new_in=
t X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.c=
oq.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 X=
77 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 (_ =3D _) \n   (, (new_int X83) (std=
.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _=
), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  =
X87 =3D global (const X86), std.drop X80 X78 [X88 | _], \n  instance.privat=
e.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-ins=
tance X79 X88 X87 X89 X90, \n  if (arity (X96) =3D arity _) true \n   (if-v=
erbose (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! A=
1).",
                   "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 =C2=ABIsSelfA'.phant_Build=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c=
0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (arity (X96) =3D arity =
X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 =3D X71)=
 \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instan=
ce_ ^ 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 facto=
ry, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) =
Not a factory synthesized by HB, \n  instance.private.hack-section-discharg=
ing X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ =3D _) \=
n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_fa=
ctory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup=
 X85 X82 X72 ff X86, \n  X87 =3D global (const X86), std.drop X80 X78 [X88 =
| _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  ins=
tance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) =3D=
 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 =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB),=
 fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (arity (X9=
6) =3D arity X72) \n   (if-verbose (coq.say HB: skipping section opening) ,=
 X73 =3D X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76=
 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (ins=
tance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.asser=
t! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance i=
s not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-npar=
ams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-sec=
tion-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  i=
f (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is =
HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplic=
its-failondup X85 X82 X72 ff X86, \n  X87 =3D 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 (ar=
ity (X96) =3D arity _) true \n   (if-verbose (header X91 , coq.say X91 clos=
ing instance section) ,\n     log.coq.env.end-section-name X76), acc-clause=
s 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 :=3D X96" ],
-                [ "Assign", "X70 :=3D X96" ]
+                [ "Assign", "A0 :=3D X96" ], [ "Assign", "X70 :=3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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     (ap=
p\n       [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c=
0]) (X96) X71) \n   Definition illtyped, \n  if (arity (X96) =3D arity X72)=
 \n   (if-verbose (coq.say HB: skipping section opening) , X73 =3D 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.pos=
tulate-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 (_ =3D _) \n   =
(, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factor=
y_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85=
 X82 X72 ff X86, \n  X87 =3D global (const X86), std.drop X80 X78 [X88 | _]=
, \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instanc=
e.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) =3D ari=
ty _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sect=
ion) ,\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 =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB),=
 fun `x` X0 c0 \\ c0]) (X96) X71) \n   Definition illtyped, \n  if (arity (=
X96) =3D arity X72) \n   (if-verbose (coq.say HB: skipping section opening)=
 , X73 =3D X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X=
76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (i=
nstance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.ass=
ert! (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-np=
arams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-s=
ection-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n =
 if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 i=
s HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimpl=
icits-failondup X85 X82 X72 ff X86, \n  X87 =3D global (const X86), std.dro=
p X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X=
88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (=
arity (X96) =3D arity _) true \n   (if-verbose (header X91 , coq.say X91 cl=
osing instance section) ,\n     log.coq.env.end-section-name X76), acc-clau=
ses 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -24608,14 +23453,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n    =
 [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (X96) X=
71) \n Definition illtyped",
+                "goal_text": "std.assert-ok!\n (coq.elaborate-skeleton\n  =
 (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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) =3D arity X72) \n   (if-verb=
ose (coq.say HB: skipping section opening) , X73 =3D 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 (glob=
al 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 synt=
hesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  i=
nstance.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X8=
3) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X8=
5 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X8=
6, \n  X87 =3D global (const X86), std.drop X80 X78 [X88 | _], \n  instance=
.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.decl=
are-instance X79 X88 X87 X89 X90, \n  if (arity (X96) =3D arity _) true \n =
  (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     l=
og.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [if (arity (X96) =3D arity X72) \n=
   (if-verbose (coq.say HB: skipping section opening) , X73 =3D X71) \n   (=
,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X=
75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postul=
ate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-ap=
p X72 (global X77) X78) \n   The type of the instance is not a factory, fac=
tory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a f=
actory synthesized by HB, \n  instance.private.hack-section-discharging X73=
 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, =
(new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ =
^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X8=
2 X72 ff X86, \n  X87 =3D global (const X86), std.drop X80 X78 [X88 | _], \=
n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.p=
rivate.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (X96) X71) \n Def=
inition illtyped",
+        "current_goal_text": "std.assert-ok!\n (coq.elaborate-skeleton\n  =
 (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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 =3D ok=
 ; A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n=
 (A2 =3D ok ; A2 =3D 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 =C2=AB=
IsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (i=
ndc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
+                "goal_text": "coq.elaborate-skeleton\n (app\n   [global (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
  global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
                 "goal_id": 1276
               },
               { "goal_text": "!", "goal_id": 1277 },
               {
-                "goal_text":
-                  "X98 =3D ok ; X98 =3D error X99 , std.fatal-error-w-data=
 Definition illtyped X99",
+                "goal_text": "X98 =3D ok ; X98 =3D error X99 , std.fatal-e=
rror-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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'=
.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=
=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
+        "current_goal_text": "coq.elaborate-skeleton\n (app\n   [global (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
  global (indc =C2=ABO=C2=BB), 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 =3D app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
, global (indt =C2=ABnat=C2=BB)]",
+                "goal_text": "X96 =3D app [global (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]",
                 "goal_id": 1280
               },
               {
-                "goal_text":
-                  "X71 =3D\n app\n  [global (const =C2=ABIsSelfA'.phant_Bu=
ild=C2=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=ABO=C2=BB)=
, fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
+                "goal_text": "X71 =3D\n app\n  [global (const =C2=ABIsSelf=
A'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
                 "goal_id": 1281
               },
               { "goal_text": "X98 =3D ok", "goal_id": 1282 }
@@ -25063,8 +23886,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global=
 (indt =C2=ABnat=C2=BB)]",
+        "current_goal_text": "X96 =3D app [global (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25281,8 +24096,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleave_context.403=C2=BB)) \n (=
app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)])",
+          "goal_text": "evar X97 (sort (typ =C2=ABinterleave_context.403=
=C2=BB)) \n (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)])",
           "goal_id": 1268
         }
       ]
@@ -25478,8 +24285,7 @@
       "Inference",
       {
         "current_goal_id": 1268,
-        "current_goal_text":
-          "evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)) \n (ap=
p [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB=
)])",
+        "current_goal_text": "evar X97 (sort (typ =C2=ABinterleave_context=
.403=C2=BB)) \n (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (i=
ndt =C2=ABnat=C2=BB)])",
         "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) (de=
clare_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 =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)])) \n (declare_constraint\n   (evar X97 (s=
ort (typ =C2=ABinterleave_context.403=C2=BB)) \n     (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   [X97, app=
 [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)=
]]) \n true",
+                "goal_text": "if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n (declare_constraint\n   (=
evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)) \n     (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n =
  [X97, app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]]) \n true",
                 "goal_id": 1284
               }
             ],
@@ -25527,8 +24331,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =C2=ABinterleave_context.403=C2=BB)) =
X96",
+              "goal_text": "evar X97 (sort (typ =C2=ABinterleave_context.4=
03=C2=BB)) X96",
               "goal_id": 1268
             },
             "cut_branch": {
@@ -25646,8 +24447,7 @@
       "Inference",
       {
         "current_goal_id": 1284,
-        "current_goal_text":
-          "if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), globa=
l (indt =C2=ABnat=C2=BB)])) \n (declare_constraint\n   (evar X97 (sort (typ=
 =C2=ABinterleave_context.403=C2=BB)) \n     (app [global (indt =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   [X97, app [global=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]]) \n t=
rue",
+        "current_goal_text": "if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n (declare_constraint\n   (=
evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)) \n     (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n =
  [X97, app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]]) \n true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25681,14 +24481,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB)])",
+                "goal_text": "var (app [global (indt =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
                 "goal_id": 1285
               },
               { "goal_text": "!", "goal_id": 1286 },
               {
-                "goal_text":
-                  "declare_constraint\n (evar X97 (sort (typ =C2=ABinterle=
ave_context.403=C2=BB)) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])) \n [X97, app [global (indt =C2=ABIsS=
elfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]]",
+                "goal_text": "declare_constraint\n (evar X97 (sort (typ =
=C2=ABinterleave_context.403=C2=BB)) \n   (app [global (indt =C2=ABIsSelfA'=
.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n [X97, app [global (ind=
t =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]]",
                 "goal_id": 1287
               }
             ],
@@ -25720,8 +24518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (i=
ndt =C2=ABnat=C2=BB)])",
+        "current_goal_text": "var (app [global (indt =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
         "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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =C2=ABIsSelfA'.axioms_=C2=BB), globa=
l (indt =C2=ABnat=C2=BB)])) \n (declare_constraint\n   (evar X97 (sort (typ=
 =C2=ABinterleave_context.403=C2=BB)) \n     (app [global (indt =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   [X97, app [global=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]]) \n t=
rue",
+        "current_goal_text": "if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n (declare_constraint\n   (=
evar X97 (sort (typ =C2=ABinterleave_context.403=C2=BB)) \n     (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n =
  [X97, app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]]) \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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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) (decl=
are_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (va=
r 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 =3D\n app\n  [global (const =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=ABO=C2=BB), fun =
`x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
+        "current_goal_text": "X71 =3D\n app\n  [global (const =C2=ABIsSelf=
A'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -26264,8 +25051,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` X0 c0 \\ c0]) (X96) X71)=
 \n Definition illtyped",
+              "goal_text": "std.assert-ok!\n (coq.elaborate-skeleton\n   (=
app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), 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 di=
agnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-da=
ta A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -26690,8 +25461,7 @@
       "Inference",
       {
         "current_goal_id": 1278,
-        "current_goal_text":
-          "ok =3D ok ; ok =3D error X99 , std.fatal-error-w-data Definitio=
n illtyped X99",
+        "current_goal_text": "ok =3D ok ; ok =3D error X99 , std.fatal-err=
or-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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ; X98 =3D error X99 , std.fatal-error-w-data D=
efinition illtyped X99",
+              "goal_text": "X98 =3D ok ; X98 =3D error X99 , std.fatal-err=
or-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 =C2=ABIsSelfA'.axio=
ms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity X72) \n   (if-v=
erbose (coq.say HB: skipping section opening) ,\n     X73 =3D\n      app\n =
      [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=AB=
nat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0]) \n   (,\n     (, (new_int X74) (std.any->strin=
g X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X=
76) \n     (instance.private.postulate-arity\n       (arity\n         (app =
[global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]=
)) \n       [] \n       (app\n         [global (const =C2=ABIsSelfA'.phant_=
Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n          global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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  ins=
tance.private.hack-section-discharging X73 X81, \n  instance.private.optimi=
ze-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X8=
3 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.=
env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 =3D global =
(const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-for=
getful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X=
87 X89 X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if-verb=
ose (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 =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity X72) \n   (if-verbose (coq.say HB: skipping section opening) ,\n     X7=
3 =3D\n      app\n       [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), =
global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `=
x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (,\n     (, (new_int X74=
) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.en=
v.begin-section X76) \n     (instance.private.postulate-arity\n       (arit=
y\n         (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)])) \n       [] \n       (app\n         [global (const =C2=
=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n          =
global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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 synthesize=
d by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instanc=
e.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (st=
d.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D =
_), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n =
 X87 =3D global (const X86), std.drop X80 X78 [X88 | _], \n  instance.priva=
te.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-in=
stance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt =C2=ABIsSe=
lfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) tru=
e \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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -27224,14 +25977,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (arity (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n   arity X72) \n (if-verbose =
(coq.say HB: skipping section opening) ,\n   X73 =3D\n    app\n     [global=
 (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB))=
 c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_ins=
tance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.=
postulate-arity\n     (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])) \n     [] \n     (app\n       [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0]) X73 \n     X72))",
+                "goal_text": "if\n (arity (app [global (indt =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n   arity X72) \n (if=
-verbose (coq.say HB: skipping section opening) ,\n   X73 =3D\n    app\n   =
  [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABn=
at=C2=BB)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76=
 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instanc=
e.private.postulate-arity\n     (arity (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n     [] \n     (app\n     =
  [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) 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 X=
77) X78) \n   The type of the instance is not a factory, factory-alias->gre=
f X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesi=
zed by HB, \n  instance.private.hack-section-discharging X73 X81, \n  insta=
nce.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (=
std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =
=3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86,=
 \n  X87 =3D global (const X86), std.drop X80 X78 [X88 | _], \n  instance.p=
rivate.check-non-forgetful-inheritance X88 X79, \n  instance.private.declar=
e-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt =C2=AB=
IsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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 X7=
2 (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 facto=
ry synthesized by HB, \n  instance.private.hack-section-discharging X73 X81=
, \n  instance.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, (new=
_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X8=
4)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X7=
2 ff X86, \n  X87 =3D global (const X86), std.drop X80 X78 [X88 | _], \n  i=
nstance.private.check-non-forgetful-inheritance X88 X79, \n  instance.priva=
te.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB)]) =3D\n   arity X72) \n (if-verbose (coq.say H=
B: skipping section opening) ,\n   X73 =3D\n    app\n     [global (const =
=C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n      g=
lobal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c=
0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^=
 X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulat=
e-arity\n     (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), glob=
al (indt =C2=ABnat=C2=BB)])) \n     [] \n     (app\n       [global (const =
=C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n       =
 global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\=
 c0]) X73 \n     X72))",
+        "current_goal_text": "if\n (arity (app [global (indt =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n   arity X72) \n (if=
-verbose (coq.say HB: skipping section opening) ,\n   X73 =3D\n    app\n   =
  [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABn=
at=C2=BB)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76=
 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instanc=
e.private.postulate-arity\n     (arity (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n     [] \n     (app\n     =
  [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]) X73 \n     X72))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -27460,14 +26204,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB)]) =3D\n arity X72",
+                "goal_text": "arity (app [global (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n arity X72",
                 "goal_id": 1293
               },
               { "goal_text": "!", "goal_id": 1294 },
               {
-                "goal_text":
-                  "if-verbose (coq.say HB: skipping section opening) ,\n X=
73 =3D\n  app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global =
(indt =C2=ABnat=C2=BB)) c0 \\ c0]",
+                "goal_text": "if-verbose (coq.say HB: skipping section ope=
ning) ,\n X73 =3D\n  app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun=
 `x` (global (indt =C2=ABnat=C2=BB)) 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB)]) =3D\n arity X72",
+        "current_goal_text": "arity (app [global (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n arity X72",
         "current_goal_predicate": "=3D",
         "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n   arity X72) \n (if-verbose (co=
q.say HB: skipping section opening) ,\n   X73 =3D\n    app\n     [global (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0=
 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instan=
ce_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.pos=
tulate-arity\n     (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB)])) \n     [] \n     (app\n       [global (co=
nst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n   =
     global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ c0]) X73 \n     X72))",
+              "goal_text": "if\n (arity (app [global (indt =C2=ABIsSelfA'.=
axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n   arity X72) \n (if-v=
erbose (coq.say HB: skipping section opening) ,\n   X73 =3D\n    app\n     =
[global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 i=
s hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.=
private.postulate-arity\n     (arity (app [global (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n     [] \n     (app\n       =
[global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABna=
t=C2=BB)) 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 =3D\n=
  app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0]",
+        "current_goal_text": "if-verbose (coq.say HB: skipping section ope=
ning) ,\n X73 =3D\n  app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun=
 `x` (global (indt =C2=ABnat=C2=BB)) 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 ope=
ning)",
                 "goal_id": 1296
               },
               {
-                "goal_text":
-                  "X73 =3D\n app\n  [global (const =C2=ABIsSelfA'.phant_Bu=
ild=C2=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=ABO=C2=BB)=
, fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
+                "goal_text": "X73 =3D\n app\n  [global (const =C2=ABIsSelf=
A'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 ope=
ning)",
         "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/ut=
ils.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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/ut=
ils.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 ope=
ning)",
         "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/ut=
ils.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D\n app\n  [global (const =C2=ABIsSelfA'.phant_Build=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=ABO=C2=BB), fun =
`x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
+        "current_goal_text": "X73 =3D\n app\n  [global (const =C2=ABIsSelf=
A'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n   global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]",
         "current_goal_predicate": "=3D",
         "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 facto=
ry synthesized by HB, \n  instance.private.hack-section-discharging\n   (ap=
p\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X8=
2, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     =
(X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-=
noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D 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 =C2=ABIsSelfA'.axioms_=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if-verbose (he=
ader X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-se=
ction-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.assert!\n   (coq.safe-dest-ap=
p\n     (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.phant_Build=C2=BB=
), global (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun =
`x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.op=
timize-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->strin=
g X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.=
coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87=
 =3D global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.c=
heck-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instan=
ce X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'=
.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -29222,14 +27904,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert!\n (coq.safe-dest-app\n   (app [global (indt=
 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (globa=
l X77) X78) The type of the instance is not a factory",
+                "goal_text": "std.assert!\n (coq.safe-dest-app\n   (app [g=
lobal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
\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.pr=
ivate.hack-section-discharging\n   (app\n     [global (const =C2=ABIsSelfA'=
.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n      global (indc =
=C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n =
 instance.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, (new_int =
X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (=
X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (a=
pp [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)]) ff X86, \n  X87 =3D 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 [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\=
n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing inst=
ance section) ,\n     log.coq.env.end-section-name X76), acc-clauses curren=
t 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 =C2=
=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n      glob=
al (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])=
 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, =
(new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ =
^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X8=
2 \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (const X86), std.drop X80 X78 [X=
88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  =
instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (a=
pp [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 c=
losing instance section) ,\n     log.coq.env.end-section-name X76), acc-cla=
uses 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (global X77) X=
78) The type of the instance is not a factory",
+        "current_goal_text": "std.assert!\n (coq.safe-dest-app\n   (app [g=
lobal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
\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 A=
1 A0), (!).",
+                  "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-err=
or-w-data A1 A0), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -29477,8 +28149,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app\n (app [global (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=BB), global (ind=
t =C2=ABnat=C2=BB)]) \n    (global X77) X78)",
+                "goal_text": "coq.safe-dest-app\n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=BB)=
, global (indt =C2=ABnat=C2=BB)]) \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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global X77) X78 ;\n std.fatal-=
error-w-data The type of the instance is not a factory \n  (coq.safe-dest-a=
pp\n    (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) \n    (global X77) X78)",
+        "current_goal_text": "coq.safe-dest-app\n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=BB)=
, global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.a=
xioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global X77) X78",
+                "goal_text": "coq.safe-dest-app\n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global X77) X78",
+        "current_goal_text": "coq.safe-dest-app\n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=
=C2=BB)) (global X77) X100",
+                "goal_text": "coq.safe-dest-app (global (indt =C2=ABIsSelf=
A'.axioms_=C2=BB)) (global X77) X100",
                 "goal_id": 1308
               },
               {
@@ -30047,8 +28699,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (c=
oq.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global X77) X78",
+              "goal_text": "coq.safe-dest-app\n (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=BB)) =
(global X77) X100",
+        "current_goal_text": "coq.safe-dest-app (global (indt =C2=ABIsSelf=
A'.axioms_=C2=BB)) (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 (c=
oq.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (c=
oq.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global X77) X78 ;\n std.fa=
tal-error-w-data The type of the instance is not a factory \n  (coq.safe-de=
st-app\n    (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)]) \n    (global X77) X78)",
+              "goal_text": "coq.safe-dest-app\n (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=
=BB) X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesiz=
ed by HB, \n  instance.private.hack-section-discharging\n   (app\n     [glo=
bal (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB)=
, \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_=
 =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_u=
nnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-=
failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (const X86), std.d=
rop X80 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.che=
ck-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance=
 X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n  =
 (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     lo=
g.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [factory-alias->gref (indt =C2=ABI=
sSelfA'.axioms_=C2=BB) 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (ind=
t =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (i=
ndt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimize-body X8=
1 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n =
    (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-co=
nst-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (c=
onst X86), std.drop X80 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  inst=
ance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.=
declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sec=
tion) ,\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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -31042,14 +29665,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-alias->gref (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
 X79",
+                "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (in=
dt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81=
 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n  =
   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-con=
st-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (co=
nst X86), std.drop X80 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  insta=
nce.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.d=
eclare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sec=
tion) ,\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-dis=
charging\n   (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` =
(global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimi=
ze-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X8=
3 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.=
env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D=
 global (const X86), std.drop X80 [global (indt =C2=ABnat=C2=BB)] [X88 | _]=
, \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instanc=
e.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [glo=
bal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
=3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing =
instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses cu=
rrent 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X79",
+        "current_goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) 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-abbr=
ev 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/da=
tabase.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31598,8 +30201,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABHasA.Axioms_=C2=BB) (const =
=C2=ABHasA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasA.Build=C2=BB=
) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABHasA.Axioms_=C2=BB=
) (const =C2=ABHasA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasA.Bu=
ild=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31623,8 +30225,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB) (const =
=C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB=
) (const =C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31648,8 +30249,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABHasB.Axioms_=C2=BB) (const =
=C2=ABHasB.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasB.Build=C2=BB=
) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABHasB.Axioms_=C2=BB=
) (const =C2=ABHasB.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasB.Bu=
ild=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31673,8 +30273,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.axi=
oms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.=
IsSelfA.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31698,8 +30297,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABIsSelfA.Axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.Buil=
d=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABIsSelfA.Axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.I=
sSelfA.Build=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31723,8 +30321,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.=
axioms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_cont=
ext.IsSelfA'.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31748,8 +30345,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABIsSelfA'.Axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_Build=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.B=
uild=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_Build=C2=BB) \n  =C2=ABinterleave_conte=
xt.IsSelfA'.Build=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31777,8 +30373,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "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/da=
tabase.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X79",
+        "current_goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) 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-abbr=
ev 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/da=
tabase.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHasB.axioms_=C2=BB) (const =
=C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB=
) (const =C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32353,8 +30928,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.axi=
oms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.=
IsSelfA.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32377,8 +30951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.=
axioms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_cont=
ext.IsSelfA'.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32399,8 +30972,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                  "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=
=BB) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.Has=
A.axioms=C2=BB) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -32429,8 +31001,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "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/da=
tabase.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X=
79",
+              "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X79",
               "goal_id": 1310
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt =C2=ABA.axioms_=C2=BB) (indt =
=C2=ABA.axioms_=C2=BB)) :- .",
+              "rule_text": "(factory-alias->gref (indt =C2=ABA.axioms_=C2=
=BB) (indt =C2=ABA.axioms_=C2=BB)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -32712,13 +31273,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt =C2=ABIsSelfA'.axioms_=C2=BB) X=
79",
+              "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X79",
               "goal_id": 1310
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt =C2=ABB.axioms_=C2=BB) (indt =
=C2=ABB.axioms_=C2=BB)) :- .",
+              "rule_text": "(factory-alias->gref (indt =C2=ABB.axioms_=C2=
=BB) (indt =C2=ABB.axioms_=C2=BB)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -32732,13 +31291,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt =C2=ABIsSelfA'.axioms_=C2=BB) X=
79",
+              "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X79",
               "goal_id": 1310
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt =C2=ABSelfA.axioms_=C2=BB) (in=
dt =C2=ABSelfA.axioms_=C2=BB)) :- .",
+              "rule_text": "(factory-alias->gref (indt =C2=ABSelfA.axioms_=
=C2=BB) (indt =C2=ABSelfA.axioms_=C2=BB)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -32768,8 +31325,7 @@
       "Inference",
       {
         "current_goal_id": 1312,
-        "current_goal_text":
-          "std.do!\n [std.assert! (factory-nparams (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X80) \n   Not a factory synthesized by HB, \n  instance.privat=
e.hack-section-discharging\n   (app\n     [global (const =C2=ABIsSelfA'.pha=
nt_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n      global (indc =C2=AB=
O=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  insta=
nce.private.optimize-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (=
std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =
=3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [=
global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])=
 ff X86, \n  X87 =3D global (const X86), std.drop X80 [global (indt =C2=ABn=
at=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance =
X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-=
instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n=
   (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , c=
oq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X=
76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.assert! (factory-nparams (ind=
t =C2=ABIsSelfA'.axioms_=C2=BB) X80) \n   Not a factory synthesized by HB, =
\n  instance.private.hack-section-discharging\n   (app\n     [global (const=
 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n      =
global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ =
c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ =3D _) \n  =
 (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_facto=
ry_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X8=
5 X82 \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (const X86), std.drop X80 [gl=
obal (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.check-non-forg=
etful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instanc=
e.private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 =
\n   X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if-verbose=
 (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.en=
d-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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -32804,14 +31359,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert! (factory-nparams (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X80) \n Not a factory synthesized by HB",
+                "goal_text": "std.assert! (factory-nparams (indt =C2=ABIsS=
elfA'.axioms_=C2=BB) 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (in=
dt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81=
 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n  =
   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-con=
st-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (co=
nst X86), std.drop X80 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  insta=
nce.private.check-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sec=
tion) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [instance.private.hack-section-dis=
charging\n   (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` =
(global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimi=
ze-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X8=
3 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.=
env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D=
 global (const X86), std.drop X80 [global (indt =C2=ABnat=C2=BB)] [X88 | _]=
, \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [gl=
obal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
=3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing =
instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses cu=
rrent 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB=
) X80) \n Not a factory synthesized by HB",
+        "current_goal_text": "std.assert! (factory-nparams (indt =C2=ABIsS=
elfA'.axioms_=C2=BB) 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 A=
1 A0), (!).",
+                  "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-err=
or-w-data A1 A0), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -33095,8 +31640,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-nparams (indt =C2=ABIsSelfA'.axioms_=C2=BB) X80=
 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-np=
arams (indt =C2=ABIsSelfA'.axioms_=C2=BB) X80)",
+                "goal_text": "factory-nparams (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  =
(factory-nparams (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X80 ;\n std=
.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (i=
ndt =C2=ABIsSelfA'.axioms_=C2=BB) X80)",
+        "current_goal_text": "factory-nparams (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  =
(factory-nparams (indt =C2=ABIsSelfA'.axioms_=C2=BB) X80)",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -33399,8 +31935,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-nparams (indt =C2=ABIsSelfA'.axioms_=C2=BB) X80=
",
+                "goal_text": "factory-nparams (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X80",
+        "current_goal_text": "factory-nparams (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X80",
         "current_goal_predicate": "factory-nparams",
         "failed_attempts": [
           {
@@ -33721,8 +32248,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt =C2=ABHasB.axioms_=C2=BB) 1) :- =
.",
+                "rule_text": "(factory-nparams (indt =C2=ABHasB.axioms_=C2=
=BB) 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33768,8 +32294,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt =C2=ABIsSelfA.axioms_=C2=BB) 0) =
:- .",
+                "rule_text": "(factory-nparams (indt =C2=ABIsSelfA.axioms_=
=C2=BB) 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33792,8 +32317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt =C2=ABSelfA.axioms_=C2=BB) 0) :-=
 .",
+                "rule_text": "(factory-nparams (indt =C2=ABSelfA.axioms_=
=C2=BB) 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33816,8 +32340,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt =C2=ABIsSelfA'.axioms_=C2=BB) 0)=
 :- .",
+                "rule_text": "(factory-nparams (indt =C2=ABIsSelfA'.axioms=
_=C2=BB) 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33838,8 +32361,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-nparams (indt =C2=ABHasA.axioms_=C2=BB) 1) :=
- .",
+                  "rule_text": "(factory-nparams (indt =C2=ABHasA.axioms_=
=C2=BB) 1) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -33868,8 +32390,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt =C2=ABHasA.axioms_=C2=BB) 1) :- =
.",
+                "rule_text": "(factory-nparams (indt =C2=ABHasA.axioms_=C2=
=BB) 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X80 ;=
\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-npar=
ams (indt =C2=ABIsSelfA'.axioms_=C2=BB) X80)",
+              "goal_text": "factory-nparams (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  =
(factory-nparams (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABn=
at=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, =
\n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X8=
5 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noi=
mplicits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (const =
X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.pr=
ivate.check-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=ABIs=
SelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) t=
rue \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-dis=
charging\n   (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` =
(global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X81, \n  instance.private.optimi=
ze-body X81 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X8=
3 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.=
env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D=
 global (const X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], =
\n  instance.private.check-non-forgetful-inheritance X88 \n   (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABI=
sSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n=
     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing insta=
nce 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -34239,14 +32750,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.hack-section-discharging\n (app\n   [g=
lobal (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0]) X81",
+                "goal_text": "instance.private.hack-section-discharging\n =
(app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]) X81",
                 "goal_id": 1323
               },
               { "goal_text": "!", "goal_id": 1324 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.optimize-body X81 X82, \n  =
if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is=
 HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-const-noimpli=
cits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (const X86), =
std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.=
check-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB=
) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'=
.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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 X8=
1 X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X83 X84) \n =
    (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq.env.add-co=
nst-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (c=
onst X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instan=
ce.private.check-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity=
 _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sectio=
n) ,\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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
  global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \=
\ c0]) X81",
+        "current_goal_text": "instance.private.hack-section-discharging\n =
(app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]) X81",
         "current_goal_predicate": "instance.private.hack-section-dischargi=
ng",
         "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/instanc=
e.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) :- (c=
urrent-mode no-builder), \n (!).",
+                "rule_text": "(instance.private.hack-section-discharging A=
0 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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) :- (c=
urrent-mode no-builder), \n (!).",
+                "rule_text": "(instance.private.hack-section-discharging A=
0 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
  global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \=
\ c0]) X81",
+        "current_goal_text": "instance.private.hack-section-discharging\n =
(app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]) X81",
         "current_goal_predicate": "instance.private.hack-section-dischargi=
ng",
         "failed_attempts": [],
         "successful_attempts": [
@@ -35140,13 +33623,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.hack-section-discharging A0 A1) :- =
(current-mode\n                                                       (buil=
der-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFacto=
ry is illtyped (BUG)), \n (A1 =3D 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 A=
3) TheFactory is illtyped (BUG)), \n (A1 =3D let `_` A3 A2 (c0 \\ A0)).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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) The=
Factory is illtyped (BUG)",
                 "goal_id": 1330
               },
               {
-                "goal_text":
-                  "X81 =3D\n let `_` X102 X101 c0 \\\n  app\n   [global (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
  global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c1 \=
\ c1]",
+                "goal_text": "X81 =3D\n let `_` X102 X101 c0 \\\n  app\n  =
 [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c1 \\ c1]",
                 "goal_id": 1331
               }
             ],
@@ -35188,13 +33667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.hack-section-discharging A0 A1) :- (c=
urrent-mode\n                                                       (builde=
r-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory=
 is illtyped (BUG)), \n (A1 =3D let `_` A3 A2 (c0 \\ A0)).",
+                "rule_text": "(instance.private.hack-section-discharging A=
0 A1) :- (current-mode\n                                                   =
    (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3)=
 TheFactory is illtyped (BUG)), \n (A1 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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) :- (c=
urrent-mode\n                                                       (builde=
r-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory=
 is illtyped (BUG)), \n (A1 =3D let `_` A3 A2 (c0 \\ A0)).",
+                "rule_text": "(instance.private.hack-section-discharging A=
0 A1) :- (current-mode\n                                                   =
    (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3)=
 TheFactory is illtyped (BUG)), \n (A1 =3D 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (c=
onst =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n  =
  global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \=
\ c0]) X81",
+        "current_goal_text": "instance.private.hack-section-discharging\n =
(app\n   [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]) X81",
         "current_goal_predicate": "instance.private.hack-section-dischargi=
ng",
         "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/instanc=
e.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 A=
0 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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     [globa=
l (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)=
) c0 \\ c0]) X82, \n  if (_ =3D _) \n   (, (new_int X83) (std.any->string X=
83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.coq=
.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt =C2=AB=
IsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =
=3D global (const X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _=
], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [gl=
obal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
=3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing =
instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses cu=
rrent X89]",
+        "current_goal_text": "std.do!\n [instance.private.optimize-body\n =
  (app\n     [global (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (in=
dt =C2=ABnat=C2=BB)) c0 \\ c0]) X82, \n  if (_ =3D _) \n   (, (new_int X83)=
 (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =
=3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [=
global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])=
 ff X86, \n  X87 =3D global (const X86), std.drop 0 [global (indt =C2=ABnat=
=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X8=
8 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-in=
stance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n  =
 (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) =3D\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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -36119,14 +34569,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.optimize-body\n (app\n   [global (cons=
t =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    g=
lobal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c=
0]) X82",
+                "goal_text": "instance.private.optimize-body\n (app\n   [g=
lobal (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0]) X82",
                 "goal_id": 1332
               },
               { "goal_text": "!", "goal_id": 1333 },
               {
-                "goal_text":
-                  "std.do!\n [if (_ =3D _) \n   (, (new_int X83) (std.any-=
>string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n=
  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \=
n  X87 =3D global (const X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [=
X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (a=
pp [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 c=
losing instance section) ,\n     log.coq.env.end-section-name X76), acc-cla=
uses current X89]",
+                "goal_text": "std.do!\n [if (_ =3D _) \n   (, (new_int X83=
) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85=
 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app =
[global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]=
) ff X86, \n  X87 =3D global (const X86), std.drop 0 [global (indt =C2=ABna=
t=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X=
88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-i=
nstance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n =
  (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) =3D\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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=AB=
IsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (i=
ndc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X82",
+        "current_goal_text": "instance.private.optimize-body\n (app\n   [g=
lobal (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) 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 A=
0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A=
0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-b=
eta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                  "rule_text": "(instance.private.optimize-body (app [glob=
al (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/instanc=
e.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 =C2=ABIsSelfA'.phant_Build=C2=BB)=
 _ ;\n coq.gref->id (const =C2=ABIsSelfA'.phant_Build=C2=BB) X103 , rex_mat=
ch phant_ X103",
+                "goal_text": "phant-abbrev _ (const =C2=ABIsSelfA'.phant_B=
uild=C2=BB) _ ;\n coq.gref->id (const =C2=ABIsSelfA'.phant_Build=C2=BB) X10=
3 , rex_match phant_ X103",
                 "goal_id": 1335
               },
               { "goal_text": "!", "goal_id": 1336 },
               {
-                "goal_text":
-                  "coq.env.const =C2=ABIsSelfA'.phant_Build=C2=BB (some X1=
04) _",
+                "goal_text": "coq.env.const =C2=ABIsSelfA'.phant_Build=C2=
=BB (some X104) _",
                 "goal_id": 1337
               },
               {
-                "goal_text":
-                  "hd-beta X104 \n [global (indt =C2=ABnat=C2=BB), global =
(indc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]=
 X105 X106",
+                "goal_text": "hd-beta X104 \n [global (indt =C2=ABnat=C2=
=BB), global (indc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=
=BB)) 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.phant_Build=C2=BB) _ ;\n c=
oq.gref->id (const =C2=ABIsSelfA'.phant_Build=C2=BB) X103 , rex_match phant=
_ X103",
+        "current_goal_text": "phant-abbrev _ (const =C2=ABIsSelfA'.phant_B=
uild=C2=BB) _ ;\n coq.gref->id (const =C2=ABIsSelfA'.phant_Build=C2=BB) X10=
3 , rex_match phant_ X103",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -36804,8 +35231,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "phant-abbrev _ (const =C2=ABIsSelfA'.phant_Build=C2=BB)=
 _",
+                "goal_text": "phant-abbrev _ (const =C2=ABIsSelfA'.phant_B=
uild=C2=BB) _",
                 "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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.phant_Build=C2=BB) _",
+        "current_goal_text": "phant-abbrev _ (const =C2=ABIsSelfA'.phant_B=
uild=C2=BB) _",
         "current_goal_predicate": "phant-abbrev",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABHasA.Axioms_=C2=BB) (const =
=C2=ABHasA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasA.Build=C2=BB=
) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABHasA.Axioms_=C2=BB=
) (const =C2=ABHasA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasA.Bu=
ild=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37166,8 +35582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB) (const =
=C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB=
) (const =C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37190,8 +35605,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABHasB.Axioms_=C2=BB) (const =
=C2=ABHasB.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasB.Build=C2=BB=
) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABHasB.Axioms_=C2=BB=
) (const =C2=ABHasB.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasB.Bu=
ild=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37214,8 +35628,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.axi=
oms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.=
IsSelfA.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37238,8 +35651,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABIsSelfA.Axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.Buil=
d=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABIsSelfA.Axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.I=
sSelfA.Build=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37262,8 +35674,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.=
axioms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_cont=
ext.IsSelfA'.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37286,8 +35697,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABIsSelfA'.Axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_Build=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.B=
uild=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_Build=C2=BB) \n  =C2=ABinterleave_conte=
xt.IsSelfA'.Build=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37308,8 +35718,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                  "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=
=BB) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.Has=
A.axioms=C2=BB) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -37338,8 +35747,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.phant_Build=C2=BB) _=
 ;\n coq.gref->id (const =C2=ABIsSelfA'.phant_Build=C2=BB) X103 , rex_match=
 phant_ X103",
+              "goal_text": "phant-abbrev _ (const =C2=ABIsSelfA'.phant_Bui=
ld=C2=BB) _ ;\n coq.gref->id (const =C2=ABIsSelfA'.phant_Build=C2=BB) 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 =
=C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB), \n    glo=
bal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]=
) X82",
+              "goal_text": "instance.private.optimize-body\n (app\n   [glo=
bal (const =C2=ABIsSelfA'.phant_Build=C2=BB), global (indt =C2=ABnat=C2=BB)=
, \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)=
) c0 \\ c0]) X82",
               "goal_id": 1332
             },
             "cut_branch": {
@@ -37705,8 +36103,7 @@
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.el=
pi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/i=
nstance.elpi",
                   "line": 314,
                   "column": 0,
                   "character": 13706
@@ -37726,8 +36123,7 @@
       "Inference",
       {
         "current_goal_id": 1337,
-        "current_goal_text":
-          "coq.env.const =C2=ABIsSelfA'.phant_Build=C2=BB (some X104) _",
+        "current_goal_text": "coq.env.const =C2=ABIsSelfA'.phant_Build=C2=
=BB (some X104) _",
         "current_goal_predicate": "coq.env.const",
         "failed_attempts": [],
         "successful_attempts": [
@@ -37738,8 +36134,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "some X104 =3D\n some\n  (fun `TheType` (sort (typ =C2=
=ABinterleave_context.386=C2=BB)) c0 \\\n    fun `a` c0 c1 \\\n     fun `b`=
 (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc =C2=ABIsSelfA'.Axiom=
s_=C2=BB), c0, c1, c2])",
+                "goal_text": "some X104 =3D\n some\n  (fun `TheType` (sort=
 (typ =C2=ABinterleave_context.386=C2=BB)) c0 \\\n    fun `a` c0 c1 \\\n   =
  fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc =C2=ABIsSel=
fA'.Axioms_=C2=BB), 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D\n some\n  (fun `TheType` (sort (typ =C2=ABinterle=
ave_context.386=C2=BB)) c0 \\\n    fun `a` c0 c1 \\\n     fun `b` (prod `_`=
 c0 c2 \\ c0) c2 \\\n      app [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB),=
 c0, c1, c2])",
+        "current_goal_text": "some X104 =3D\n some\n  (fun `TheType` (sort=
 (typ =C2=ABinterleave_context.386=C2=BB)) c0 \\\n    fun `a` c0 c1 \\\n   =
  fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc =C2=ABIsSel=
fA'.Axioms_=C2=BB), c0, c1, c2])",
         "current_goal_predicate": "=3D",
         "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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleave_context.38=
6=C2=BB)) c0 \\\n   fun `a` c0 c1 \\\n    fun `b` (prod `_` c0 c2 \\ c0) c2=
 \\\n     app [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), c0, c1, c2]) \n =
[global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n  fun `x` (g=
lobal (indt =C2=ABnat=C2=BB)) c0 \\ c0] X105 X106",
+        "current_goal_text": "hd-beta\n (fun `TheType` (sort (typ =C2=ABin=
terleave_context.386=C2=BB)) c0 \\\n   fun `a` c0 c1 \\\n    fun `b` (prod =
`_` c0 c2 \\ c0) c2 \\\n     app [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), c0, c1, c2]) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=
=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) 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-be=
ta (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 =C2=ABnat=C2=BB)) c0 \=
\\n   fun `b` (prod `_` (global (indt =C2=ABnat=C2=BB)) c1 \\ global (indt =
=C2=ABnat=C2=BB)) c1 \\\n    app [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB), c0, c1]) \n [global (indc =C2=ABO=C2=BB),=
 fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X105 X106",
+                "goal_text": "hd-beta\n (fun `a` (global (indt =C2=ABnat=
=C2=BB)) c0 \\\n   fun `b` (prod `_` (global (indt =C2=ABnat=C2=BB)) c1 \\ =
global (indt =C2=ABnat=C2=BB)) c1 \\\n    app [global (indc =C2=ABIsSelfA'.=
Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), c0, c1]) \n [global (indc =
=C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB), global (i=
ndc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X=
105 X106",
+              "goal_text": "hd-beta X104 \n [global (indt =C2=ABnat=C2=BB)=
, global (indc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) =
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 =C2=ABnat=C2=BB)) c0 \\\n   fu=
n `b` (prod `_` (global (indt =C2=ABnat=C2=BB)) c1 \\ global (indt =C2=ABna=
t=C2=BB)) c1 \\\n    app [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), globa=
l (indt =C2=ABnat=C2=BB), c0, c1]) \n [global (indc =C2=ABO=C2=BB), fun `x`=
 (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X105 X106",
+        "current_goal_text": "hd-beta\n (fun `a` (global (indt =C2=ABnat=
=C2=BB)) c0 \\\n   fun `b` (prod `_` (global (indt =C2=ABnat=C2=BB)) c1 \\ =
global (indt =C2=ABnat=C2=BB)) c1 \\\n    app [global (indc =C2=ABIsSelfA'.=
Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), c0, c1]) \n [global (indc =
=C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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-be=
ta (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 =C2=ABnat=C2=
=BB)) c0 \\ global (indt =C2=ABnat=C2=BB)) c0 \\\n   app\n    [global (indc=
 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n     globa=
l (indc =C2=ABO=C2=BB), c0]) [fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\=
 c0] \n X105 X106",
+                "goal_text": "hd-beta\n (fun `b` (prod `_` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ global (indt =C2=ABnat=C2=BB)) c0 \\\n   app\n    [=
global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n     global (indc =C2=ABO=C2=BB), c0]) [fun `x` (global (indt =C2=ABnat=
=C2=BB)) 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) c0 \\\=
n   fun `b` (prod `_` (global (indt =C2=ABnat=C2=BB)) c1 \\ global (indt =
=C2=ABnat=C2=BB)) c1 \\\n    app [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB), c0, c1]) \n [global (indc =C2=ABO=C2=BB),=
 fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X105 X106",
+              "goal_text": "hd-beta\n (fun `a` (global (indt =C2=ABnat=C2=
=BB)) c0 \\\n   fun `b` (prod `_` (global (indt =C2=ABnat=C2=BB)) c1 \\ glo=
bal (indt =C2=ABnat=C2=BB)) c1 \\\n    app [global (indc =C2=ABIsSelfA'.Axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB), c0, c1]) \n [global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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 =C2=ABnat=C2=BB)) c0=
 \\ global (indt =C2=ABnat=C2=BB)) c0 \\\n   app\n    [global (indc =C2=ABI=
sSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n     global (indc =
=C2=ABO=C2=BB), c0]) [fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] \n =
X105 X106",
+        "current_goal_text": "hd-beta\n (fun `b` (prod `_` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ global (indt =C2=ABnat=C2=BB)) c0 \\\n   app\n    [=
global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), =
\n     global (indc =C2=ABO=C2=BB), c0]) [fun `x` (global (indt =C2=ABnat=
=C2=BB)) 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-be=
ta (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 =C2=ABIsSelfA'.Axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), =
fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) [] X105 \n X106",
+                "goal_text": "hd-beta\n (app\n   [global (indc =C2=ABIsSel=
fA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=
=BB)) c0 \\ global (indt =C2=ABnat=C2=BB)) c0 \\\n   app\n    [global (indc=
 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n     globa=
l (indc =C2=ABO=C2=BB), c0]) [fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\=
 c0] \n X105 X106",
+              "goal_text": "hd-beta\n (fun `b` (prod `_` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ global (indt =C2=ABnat=C2=BB)) c0 \\\n   app\n    [glo=
bal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n =
    global (indc =C2=ABO=C2=BB), c0]) [fun `x` (global (indt =C2=ABnat=C2=
=BB)) 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 =C2=ABIsSelfA'.Axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` =
(global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) [] X105 \n X106",
+        "current_goal_text": "hd-beta\n (app\n   [global (indc =C2=ABIsSel=
fA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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.appen=
d 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 =C2=ABnat=C2=BB), global (in=
dc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] []=
 X107",
+                "goal_text": "std.append\n [global (indt =C2=ABnat=C2=BB),=
 global (indc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ c0] [] X107",
                 "goal_id": 1349
               },
               {
-                "goal_text":
-                  "hd-beta (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) X1=
07 X105 X106",
+                "goal_text": "hd-beta (global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB)) 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), =
fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) [] X105 \n X106",
+              "goal_text": "hd-beta\n (app\n   [global (indc =C2=ABIsSelfA=
'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=
=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) 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 =C2=ABnat=C2=BB), global (indc =C2=
=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] [] X107",
+        "current_goal_text": "std.append\n [global (indt =C2=ABnat=C2=BB),=
 global (indc =C2=ABO=C2=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ 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]) :- (st=
d.append A1 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -40154,8 +38471,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.append [global (indc =C2=ABO=C2=BB), fun `x` (globa=
l (indt =C2=ABnat=C2=BB)) c0 \\ c0] [] \n X108",
+                "goal_text": "std.append [global (indc =C2=ABO=C2=BB), fun=
 `x` (global (indt =C2=ABnat=C2=BB)) 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 A=
2 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABO=C2=BB), fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0] [] \n X108",
+        "current_goal_text": "std.append [global (indc =C2=ABO=C2=BB), fun=
 `x` (global (indt =C2=ABnat=C2=BB)) 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]) :- (st=
d.append A1 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -40600,8 +38901,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.append [fun `x` (global (indt =C2=ABnat=C2=BB)) c0 =
\\ c0] [] X109",
+                "goal_text": "std.append [fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0] [] X109",
                 "goal_id": 1352
               }
             ],
@@ -40614,8 +38914,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A=
2 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 A=
2 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) c0 \\ c0] [=
] X109",
+        "current_goal_text": "std.append [fun `x` (global (indt =C2=ABnat=
=C2=BB)) 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]) :- (st=
d.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 A=
2 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 A=
2 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 A=
2 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 :=3D []" ],
-                [ "Assign", "X110 :=3D []" ]
+                [ "Assign", "A0 :=3D []" ], [ "Assign", "X110 :=3D []" ]
               ]
             },
             "siblings": [],
@@ -41570,8 +39838,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A=
2 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 A=
2 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 A=
2 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB)) \n [global=
 (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n  fun `x` (global (=
indt =C2=ABnat=C2=BB)) c0 \\ c0] X105 X106",
+        "current_goal_text": "hd-beta (global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB)) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n=
  fun `x` (global (indt =C2=ABnat=C2=BB)) 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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB)) \n [global =
(indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n  fun `x` (global (i=
ndt =C2=ABnat=C2=BB)) c0 \\ c0] X82",
+        "current_goal_text": "unwind (global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB)) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n=
  fun `x` (global (indt =C2=ABnat=C2=BB)) 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 =C2=ABIsSelfA'.Axioms_=C2=BB))) \=
n (coq.mk-app-uvar (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) \n   [globa=
l (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n    fun `x` (globa=
l (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82) \n (coq.mk-app (global (indc =C2=
=ABIsSelfA'.Axioms_=C2=BB)) \n   [global (indt =C2=ABnat=C2=BB), global (in=
dc =C2=ABO=C2=BB), \n    fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] =
X82)",
+                "goal_text": "if (var (global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB))) \n (coq.mk-app-uvar (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) =
\n   [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n    fun=
 `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82) \n (coq.mk-app (global =
(indc =C2=ABIsSelfA'.Axioms_=C2=BB)) \n   [global (indt =C2=ABnat=C2=BB), g=
lobal (indc =C2=ABO=C2=BB), \n    fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ 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 A=
1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-ap=
p-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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB))) \n (coq.m=
k-app-uvar (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) \n   [global (indt =
=C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n    fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0] X82) \n (coq.mk-app (global (indc =C2=ABIsSelfA=
'.Axioms_=C2=BB)) \n   [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=
=C2=BB), \n    fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82)",
+        "current_goal_text": "if (var (global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB))) \n (coq.mk-app-uvar (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) =
\n   [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n    fun=
 `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82) \n (coq.mk-app (global =
(indc =C2=ABIsSelfA'.Axioms_=C2=BB)) \n   [global (indt =C2=ABnat=C2=BB), g=
lobal (indc =C2=ABO=C2=BB), \n    fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ 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 =C2=ABIsSelfA'.Axioms_=C2=
=BB)) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n  f=
un `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82",
+                "goal_text": "coq.mk-app-uvar (global (indc =C2=ABIsSelfA'=
.Axioms_=C2=BB)) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=
=BB), \n  fun `x` (global (indt =C2=ABnat=C2=BB)) 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 A=
1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-ap=
p-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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-ap=
p-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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB))) \n (coq.m=
k-app-uvar (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) \n   [global (indt =
=C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n    fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0] X82) \n (coq.mk-app (global (indc =C2=ABIsSelfA=
'.Axioms_=C2=BB)) \n   [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=
=C2=BB), \n    fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82)",
+        "current_goal_text": "if (var (global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB))) \n (coq.mk-app-uvar (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB)) =
\n   [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n    fun=
 `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82) \n (coq.mk-app (global =
(indc =C2=ABIsSelfA'.Axioms_=C2=BB)) \n   [global (indt =C2=ABnat=C2=BB), g=
lobal (indc =C2=ABO=C2=BB), \n    fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ c0] X82)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -43586,8 +41793,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.mk-app (global (indc =C2=ABIsSelfA'.Axioms_=C2=BB))=
 \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n  fun `x=
` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82",
+                "goal_text": "coq.mk-app (global (indc =C2=ABIsSelfA'.Axio=
ms_=C2=BB)) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB),=
 \n  fun `x` (global (indt =C2=ABnat=C2=BB)) 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 A=
1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-ap=
p-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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB)) \n [glo=
bal (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB), \n  fun `x` (globa=
l (indt =C2=ABnat=C2=BB)) c0 \\ c0] X82",
+        "current_goal_text": "coq.mk-app (global (indc =C2=ABIsSelfA'.Axio=
ms_=C2=BB)) \n [global (indt =C2=ABnat=C2=BB), global (indc =C2=ABO=C2=BB),=
 \n  fun `x` (global (indt =C2=ABnat=C2=BB)) 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 A=
1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-ap=
p-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-bet=
a 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (_ =3D _) \n   (, (new_int X83) (std.any->string =
X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _), \n  log.co=
q.env.add-const-noimplicits-failondup X85 \n   (app\n     [global (indc =C2=
=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      global (=
indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n =
  (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB)]) ff X86, \n  X87 =3D global (const X86), std.drop 0 [global (indt =
=C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inher=
itance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.d=
eclare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \=
n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (=
indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if-verbose (header X9=
1 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-n=
ame X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [if (_ =3D _) \n   (, (new_int X83=
) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85=
 =3D _), \n  log.coq.env.add-const-noimplicits-failondup X85 \n   (app\n   =
  [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB=
), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), glo=
bal (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (const X86), std.dr=
op 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.check-=
non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n =
 instance.private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 =
X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if=
-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.co=
q.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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -44402,14 +42587,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (_ =3D _) \n (, (new_int X83) (std.any->string X83 X=
84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _)",
+                "goal_text": "if (_ =3D _) \n (, (new_int X83) (std.any->s=
tring X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _)",
                 "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 =C2=ABIsSelfA'.Axioms_=C2=BB), global (in=
dt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (=
indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D global (c=
onst X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instan=
ce.private.check-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity=
 _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sectio=
n) ,\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 =C2=ABIsSelfA'.Axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x=
` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=AB=
IsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =
=3D global (const X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _=
], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [gl=
obal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
=3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing =
instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses cu=
rrent 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (_ =3D _) \n (, (new_int X83) (std.any->string X83 X84) \n  =
 (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _)",
+        "current_goal_text": "if (_ =3D _) \n (, (new_int X83) (std.any->s=
tring X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -44751,8 +42927,7 @@
               { "goal_text": "_ =3D _", "goal_id": 1362 },
               { "goal_text": "!", "goal_id": 1363 },
               {
-                "goal_text":
-                  ", (new_int X83) (std.any->string X83 X84) (X85 is HB_un=
named_factory_ ^ X84)",
+                "goal_text": ", (new_int X83) (std.any->string X83 X84) (X=
85 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (_ =3D _) \n (, (new_int X83) (std.any->string X83 X84=
) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _)",
+              "goal_text": "if (_ =3D _) \n (, (new_int X83) (std.any->str=
ing X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 =3D _)",
               "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_fa=
ctory_ ^ X84)",
+        "current_goal_text": ", (new_int X83) (std.any->string X83 X84) (X=
85 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 :=3D 27" ],
-                [ "Assign", "A1 :=3D X84" ]
+                [ "Assign", "A0 :=3D 27" ], [ "Assign", "A1 :=3D 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 A=
0 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
0 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
0 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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_unnam=
ed_factory_27 \n   (app\n     [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), =
global (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x`=
 (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  X87 =3D=
 global (const X86), std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], =
\n  instance.private.check-non-forgetful-inheritance X88 \n   (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABI=
sSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n=
     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing insta=
nce 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 =C2=ABIsSelf=
A'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [=
global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])=
 ff X86, \n  X87 =3D global (const X86), std.drop 0 [global (indt =C2=ABnat=
=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X8=
8 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-in=
stance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n  =
 (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) =3D\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! A=
1).",
                   "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 =C2=ABIsSelfA'.Axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global =
(indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n (app [global (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86",
+                "goal_text": "log.coq.env.add-const-noimplicits-failondup =
HB_unnamed_factory_27 \n (app\n   [global (indc =C2=ABIsSelfA'.Axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun=
 `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86",
                 "goal_id": 1373
               },
               { "goal_text": "!", "goal_id": 1374 },
               {
-                "goal_text":
-                  "std.do!\n [X87 =3D global (const X86), std.drop 0 [glob=
al (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.check-non-forget=
ful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.=
private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n=
   X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB)]) =3D\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 =3D global (const X86), std.d=
rop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instance.private.check=
-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n=
  instance.private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88=
 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (i=
f-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.c=
oq.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0]) \n (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 =C2=ABIsSelfA'.Axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun=
 `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86",
+        "current_goal_predicate": "log.coq.env.add-const-noimplicits-failo=
ndup",
         "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                                                                   =
 :=3D 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 =3D none) \n                         =
                                           (\n                             =
                                       A5 =3D\n                            =
                                        some A2), \n                       =
                                            log.private.log-vernac\n       =
                                                             (\n           =
                                                         log.private.coq.ve=
rnac.definition\n                                                          =
          A0 A5 A1), \n                                                    =
               get-option\n                                                =
                    coq:locality \n                                        =
                            local =3D>\n                                   =
                                 log.coq.arguments.set-implicit\n          =
                                                          (const A4) \n    =
                                                                [[]]]).",
+                  "rule_text": "(log.coq.env.add-const-noimplicits-failond=
up 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 i=
nformation in \n                                                           =
         A0 : A6 \n                                                        =
            :=3D 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 =3D none) \n              =
                                                      (\n                  =
                                                  A5 =3D\n                 =
                                                   some A2), \n            =
                                                       log.private.log-vern=
ac\n                                                                    (\n=
                                                                    log.pri=
vate.coq.vernac.definition\n                                               =
                     A0 A5 A1), \n                                         =
                          get-option\n                                     =
                               coq:locality \n                             =
                                       local =3D>\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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]=
) ;\n       ground_term\n        (app\n          [global (indc =C2=ABIsSelf=
A'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n           global (indc=
 =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n   =
(,\n     (coq.term->string\n       (app [global (indt =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X111) \n     (coq.term->string\n =
      (app\n         [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (i=
ndt =C2=ABnat=C2=BB), \n          global (indc =C2=ABO=C2=BB), fun `x` (glo=
bal (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n     (coq.error HB: cannot i=
nfer some information in HB_unnamed_factory_27 : \n       X111 :=3D X112)) =
true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (=
indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      =
global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ =
c0]) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if=
 (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=AB=
nat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (app [global (=
indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])), \n  l=
og.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_fac=
tory_27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fu=
n `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-option coq:local=
ity local =3D>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+                "goal_text": "std.do!\n [if\n   (not\n     (ground_term\n =
      (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=AB=
nat=C2=BB)]) ;\n       ground_term\n        (app\n          [global (indc =
=C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n           =
global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ =
c0]))) \n   (,\n     (coq.term->string\n       (app [global (indt =C2=ABIsS=
elfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X111) \n     (coq.ter=
m->string\n       (app\n         [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB), \n          global (indc =C2=ABO=C2=BB), =
fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n     (coq.error =
HB: cannot infer some information in HB_unnamed_factory_27 : \n       X111 =
:=3D X112)) true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n  =
   [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), =
global (indt =C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.add-location (const=
 X86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global=
 (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (=
app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition =
HB_unnamed_factory_27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'=
.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-o=
ption coq:locality local =3D>\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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   =
    ground_term\n        (app\n          [global (indc =C2=ABIsSelfA'.Axiom=
s_=C2=BB), global (indt =C2=ABnat=C2=BB), \n           global (indc =C2=ABO=
=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n   (,\n    =
 (coq.term->string\n       (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
, global (indt =C2=ABnat=C2=BB)]) X111) \n     (coq.term->string\n       (a=
pp\n         [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n          global (indc =C2=ABO=C2=BB), fun `x` (global (in=
dt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n     (coq.error HB: cannot infer so=
me information in HB_unnamed_factory_27 : \n       X111 :=3D X112)) true, \=
n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc =
=C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      globa=
l (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) =
\n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABn=
at=C2=BB)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (=
app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])), \n  log.pr=
ivate.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_=
27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x`=
 (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-option coq:locality l=
ocal =3D>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+        "current_goal_text": "std.do!\n [if\n   (not\n     (ground_term\n =
      (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=AB=
nat=C2=BB)]) ;\n       ground_term\n        (app\n          [global (indc =
=C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n           =
global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ =
c0]))) \n   (,\n     (coq.term->string\n       (app [global (indt =C2=ABIsS=
elfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X111) \n     (coq.ter=
m->string\n       (app\n         [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB), \n          global (indc =C2=ABO=C2=BB), =
fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n     (coq.error =
HB: cannot infer some information in HB_unnamed_factory_27 : \n       X111 =
:=3D X112)) true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n  =
   [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), =
global (indt =C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.add-location (const=
 X86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global=
 (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (=
app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition =
HB_unnamed_factory_27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'=
.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-o=
ption coq:locality local =3D>\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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -49507,14 +47584,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (not\n   (ground_term\n     (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n     ground_=
term\n      (app\n        [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), glob=
al (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=BB), fun `x` =
(global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n (,\n   (coq.term->string\n =
    (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABna=
t=C2=BB)]) X111) \n   (coq.term->string\n     (app\n       [global (indc =
=C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        glo=
bal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]=
) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_fac=
tory_27 : \n     X111 :=3D X112)) true",
+                "goal_text": "if\n (not\n   (ground_term\n     (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n =
    ground_term\n      (app\n        [global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=
=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n (,\n   (coq.t=
erm->string\n     (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB)]) X111) \n   (coq.term->string\n     (app\n       [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB=
)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB=
_unnamed_factory_27 : \n     X111 :=3D 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 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =
=C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.add-locati=
on (const X86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n  =
   some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.de=
finition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc =C2=
=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global=
 (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])),=
 \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-implicit =
(const X86) [[]]]",
+                "goal_text": "std.do!\n [coq.env.add-const HB_unnamed_fact=
ory_27 \n   (app\n     [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (globa=
l (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'=
.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.ad=
d-location (const X86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113=
 =3D\n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (i=
ndt =C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.private.coq.ve=
rnac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (ind=
c =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        g=
lobal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c=
0])), \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-impl=
icit (const X86) [[]]]",
                 "goal_id": 1379
               }
             ],
@@ -49546,13 +47621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n     ground_term\n  =
    (app\n        [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=BB), fun `x` (global =
(indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app=
 [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)=
]) X111) \n   (coq.term->string\n     (app\n       [global (indc =C2=ABIsSe=
lfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =
=C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n=
   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : =
\n     X111 :=3D X112)) true",
+        "current_goal_text": "if\n (not\n   (ground_term\n     (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n =
    ground_term\n      (app\n        [global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=
=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n (,\n   (coq.t=
erm->string\n     (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB)]) X111) \n   (coq.term->string\n     (app\n       [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB=
)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB=
_unnamed_factory_27 : \n     X111 :=3D 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 =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   ground_term\n    (a=
pp\n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABn=
at=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=
=ABnat=C2=BB)) c0 \\ c0]))",
+                "goal_text": "not\n (ground_term\n   (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   ground=
_term\n    (app\n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (glob=
al (indt =C2=ABnat=C2=BB)) c0 \\ c0]))",
                 "goal_id": 1380
               },
               { "goal_text": "!", "goal_id": 1381 },
               {
-                "goal_text":
-                  ",\n (coq.term->string\n   (app [global (indt =C2=ABIsSe=
lfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X111) \n (coq.term->st=
ring\n   (app\n     [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (in=
dt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (=
indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n (coq.error HB: cannot infer some=
 information in HB_unnamed_factory_27 : \n   X111 :=3D X112)",
+                "goal_text": ",\n (coq.term->string\n   (app [global (indt=
 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X111) \n (c=
oq.term->string\n   (app\n     [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x=
` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n (coq.error HB: cannot=
 infer some information in HB_unnamed_factory_27 : \n   X111 :=3D X112)",
                 "goal_id": 1382
               }
             ],
@@ -49974,13 +48038,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   ground_term\n    (app\n    =
  [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB=
), \n       global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0]))",
+        "current_goal_text": "not\n (ground_term\n   (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   ground=
_term\n    (app\n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (glob=
al (indt =C2=ABnat=C2=BB)) c0 \\ c0]))",
         "current_goal_predicate": "not",
         "failed_attempts": [],
         "successful_attempts": [
@@ -50340,8 +48395,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "ground_term (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)])\n ;\n ground_term\n  (app\n    [gl=
obal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n=
     global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c=
0 \\ c0])",
+                "goal_text": "ground_term (app [global (indt =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])\n ;\n ground_term\n  (app=
\n    [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n     global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABna=
t=C2=BB)) 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB)])\n ;\n ground_term\n  (app\n    [global (indc=
 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n     globa=
l (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])",
+        "current_goal_text": "ground_term (app [global (indt =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])\n ;\n ground_term\n  (app=
\n    [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n     global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABna=
t=C2=BB)) c0 \\ c0])",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -50779,8 +48824,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "ground_term (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)])",
+                "goal_text": "ground_term (app [global (indt =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
                 "goal_id": 1386
               }
             ],
@@ -50869,13 +48913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB)])",
+        "current_goal_text": "ground_term (app [global (indt =C2=ABIsSelfA=
'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
         "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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])\n ;\n ground_term\n  (app\n    [globa=
l (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n   =
  global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \=
\ c0])",
+              "goal_text": "ground_term (app [global (indt =C2=ABIsSelfA'.=
axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])\n ;\n ground_term\n  (app\n=
    [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n     global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) 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 =C2=ABIsSelfA'.=
axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   ground_term\n    (app=
\n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=AB=
nat=C2=BB)) c0 \\ c0]))",
+              "goal_text": "not\n (ground_term\n   (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n   ground_te=
rm\n    (app\n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (in=
dt =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (global =
(indt =C2=ABnat=C2=BB)) 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n     ground_term\n  =
    (app\n        [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=BB), fun `x` (global =
(indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app=
 [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)=
]) X111) \n   (coq.term->string\n     (app\n       [global (indc =C2=ABIsSe=
lfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =
=C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]) X112) \n=
   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : =
\n     X111 :=3D X112)) true",
+        "current_goal_text": "if\n (not\n   (ground_term\n     (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ;\n =
    ground_term\n      (app\n        [global (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB), \n         global (indc =C2=ABO=C2=
=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))) \n (,\n   (coq.t=
erm->string\n     (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB)]) X111) \n   (coq.term->string\n     (app\n       [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB=
)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB=
_unnamed_factory_27 : \n     X111 :=3D 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), =
global (indt =C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.add-location (const=
 X86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global=
 (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (=
app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition =
HB_unnamed_factory_27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'=
.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=
=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-o=
ption coq:locality local =3D>\n   log.coq.arguments.set-implicit (const X86=
) [[]]]",
+        "current_goal_text": "std.do!\n [coq.env.add-const HB_unnamed_fact=
ory_27 \n   (app\n     [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global =
(indt =C2=ABnat=C2=BB), \n      global (indc =C2=ABO=C2=BB), fun `x` (globa=
l (indt =C2=ABnat=C2=BB)) c0 \\ c0]) \n   (app [global (indt =C2=ABIsSelfA'=
.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) ff X86, \n  log.coq.env.ad=
d-location (const X86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113=
 =3D\n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (i=
ndt =C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.private.coq.ve=
rnac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (ind=
c =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        g=
lobal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c=
0])), \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-impl=
icit (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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -52967,14 +50965,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.env.add-const HB_unnamed_factory_27 \n (app\n   [gl=
obal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n=
    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0=
 \\ c0]) \n (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)]) ff X86",
+                "goal_text": "coq.env.add-const HB_unnamed_factory_27 \n (=
app\n   [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0]) \n (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB)]) 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=AB=
nat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (app [global (=
indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])), \n  l=
og.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_fac=
tory_27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fu=
n `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-option coq:local=
ity local =3D>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+                "goal_text": "std.do!\n [log.coq.env.add-location (const X=
86), \n  if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (=
indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n     some (ap=
p [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB=
)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_=
unnamed_factory_27 X113 \n     (app\n       [global (indc =C2=ABIsSelfA'.Ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global (indc =C2=ABO=
=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-optio=
n coq:locality local =3D>\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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (in=
dc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n    glob=
al (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])=
 \n (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABna=
t=C2=BB)]) ff X86",
+        "current_goal_text": "coq.env.add-const HB_unnamed_factory_27 \n (=
app\n   [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n    global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=
=C2=BB)) c0 \\ c0]) \n (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), gl=
obal (indt =C2=ABnat=C2=BB)]) 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_fac=
tory_27=C2=BB), \n  if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\n  =
   some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.de=
finition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc =C2=
=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        global=
 (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])),=
 \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-implicit =
(const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+        "current_goal_text": "std.do!\n [log.coq.env.add-location (const =
=C2=ABHB_unnamed_factory_27=C2=BB), \n  if (var (app [global (indt =C2=ABIs=
SelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none=
) \n   (X113 =3D\n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.pr=
ivate.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       =
[global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB),=
 \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0])), \n  get-option coq:locality local =3D>\n   log.coq.argum=
ents.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
         "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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -54207,14 +52176,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.coq.env.add-location (const =C2=ABHB_unnamed_factor=
y_27=C2=BB)",
+                "goal_text": "log.coq.env.add-location (const =C2=ABHB_unn=
amed_factory_27=C2=BB)",
                 "goal_id": 1392
               },
               { "goal_text": "!", "goal_id": 1393 },
               {
-                "goal_text":
-                  "std.do!\n [if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X=
113 =3D\n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global=
 (indt =C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.private.coq=
.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (=
indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      =
  global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \=
\ c0])), \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-i=
mplicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+                "goal_text": "std.do!\n [if (var (app [global (indt =C2=AB=
IsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D no=
ne) \n   (X113 =3D\n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log=
.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n    =
   [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABna=
t=C2=BB)) c0 \\ c0])), \n  get-option coq:locality local =3D>\n   log.coq.a=
rguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
                 "goal_id": 1394
               }
             ],
@@ -54284,13 +52251,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=C2=
=BB)",
+        "current_goal_text": "log.coq.env.add-location (const =C2=ABHB_unn=
amed_factory_27=C2=BB)",
         "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-loc=
ation A0 A1)) \n                                   true).",
+                  "rule_text": "(log.coq.env.add-location A0) :- (if (get-=
option elpi.loc A1) \n                                   (acc-clause librar=
y (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 (d=
ecl-location (const =C2=ABHB_unnamed_factory_27=C2=BB) X114)) \n true",
+                "goal_text": "if (get-option elpi.loc X114) \n (acc-clause=
 library (decl-location (const =C2=ABHB_unnamed_factory_27=C2=BB) X114)) \n=
 true",
                 "goal_id": 1395
               }
             ],
@@ -54663,13 +52618,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.l=
oc A1) \n                                   (acc-clause library (decl-locat=
ion A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-op=
tion elpi.loc A1) \n                                   (acc-clause library =
(decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-loca=
tion (const =C2=ABHB_unnamed_factory_27=C2=BB) X114)) \n true",
+        "current_goal_text": "if (get-option elpi.loc X114) \n (acc-clause=
 library (decl-location (const =C2=ABHB_unnamed_factory_27=C2=BB) 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 =C2=ABHB_unnam=
ed_factory_27=C2=BB) X114)",
+                "goal_text": "acc-clause library (decl-location (const =C2=
=ABHB_unnamed_factory_27=C2=BB) X114)",
                 "goal_id": 1398
               }
             ],
@@ -55143,13 +53086,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.l=
oc A1) \n                                   (acc-clause library (decl-locat=
ion A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-op=
tion elpi.loc A1) \n                                   (acc-clause library =
(decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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)\", lin=
e 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.l=
oc A1) \n                                   (acc-clause library (decl-locat=
ion A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-op=
tion elpi.loc A1) \n                                   (acc-clause library =
(decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (dec=
l-location (const =C2=ABHB_unnamed_factory_27=C2=BB) X114)) \n true",
+              "goal_text": "if (get-option elpi.loc X114) \n (acc-clause l=
ibrary (decl-location (const =C2=ABHB_unnamed_factory_27=C2=BB) X114)) \n t=
rue",
               "goal_id": 1395
             },
             "cut_branch": {
@@ -56063,8 +53983,7 @@
       "Inference",
       {
         "current_goal_id": 1398,
-        "current_goal_text":
-          "acc-clause library \n (decl-location (const =C2=ABHB_unnamed_fa=
ctory_27=C2=BB) \n   File \"(stdin)\", line 1, column 2, character 3:)",
+        "current_goal_text": "acc-clause library \n (decl-location (const =
=C2=ABHB_unnamed_factory_27=C2=BB) \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 =C2=ABHB_unnamed_factory_27=C2=BB) \n     File \"(stdi=
n)\", line 1, column 2, character 3:))",
+                "goal_text": "coq.elpi.accumulate library hb.db \n (clause=
 _ _ \n   (decl-location (const =C2=ABHB_unnamed_factory_27=C2=BB) \n     F=
ile \"(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 (cl=
ause _ _ A1)).",
+                "rule_text": "(acc-clause A0 A1) :- (coq.elpi.accumulate A=
0 hb.db (clause _ _ A1)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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.l=
oc A1) \n                                   (acc-clause library (decl-locat=
ion A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-op=
tion elpi.loc A1) \n                                   (acc-clause library =
(decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-loc=
ation (const =C2=ABHB_unnamed_factory_27=C2=BB) \n     File \"(stdin)\", li=
ne 1, column 2, character 3:))",
+        "current_goal_text": "coq.elpi.accumulate library hb.db \n (clause=
 _ _ \n   (decl-location (const =C2=ABHB_unnamed_factory_27=C2=BB) \n     F=
ile \"(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 (cl=
ause _ _ A1)).",
+                "rule_text": "(acc-clause A0 A1) :- (coq.elpi.accumulate A=
0 hb.db (clause _ _ A1)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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.l=
oc A1) \n                                   (acc-clause library (decl-locat=
ion A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-op=
tion elpi.loc A1) \n                                   (acc-clause library =
(decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D none) \n   (X113 =3D\=
n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log.private.coq.vernac=
.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc =
=C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n        glo=
bal (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]=
)), \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-implic=
it (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+        "current_goal_text": "std.do!\n [if (var (app [global (indt =C2=AB=
IsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (X113 =3D no=
ne) \n   (X113 =3D\n     some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])), \n  log.private.log-vernac\n   (log=
.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n    =
   [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABna=
t=C2=BB)) c0 \\ c0])), \n  get-option coq:locality local =3D>\n   log.coq.a=
rguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
         "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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -57084,14 +54973,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)])) \n (X113 =3D none) \n (X113 =3D\n   som=
e (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB)]))",
+                "goal_text": "if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n (X113 =3D none) \n (X113 =
=3D\n   some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt=
 =C2=ABnat=C2=BB)]))",
                 "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 (i=
ndc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n       =
 global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\=
 c0])), \n  get-option coq:locality local =3D>\n   log.coq.arguments.set-im=
plicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+                "goal_text": "std.do!\n [log.private.log-vernac\n   (log.p=
rivate.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n      =
 [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)=
, \n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=
=BB)) c0 \\ c0])), \n  get-option coq:locality local =3D>\n   log.coq.argum=
ents.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
                 "goal_id": 1402
               }
             ],
@@ -57180,13 +55067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), globa=
l (indt =C2=ABnat=C2=BB)])) \n (X113 =3D none) \n (X113 =3D\n   some (app [=
global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])=
)",
+        "current_goal_text": "if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n (X113 =3D none) \n (X113 =
=3D\n   some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt=
 =C2=ABnat=C2=BB)]))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -57547,8 +55425,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "var (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), g=
lobal (indt =C2=ABnat=C2=BB)])",
+                "goal_text": "var (app [global (indt =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
                 "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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (i=
ndt =C2=ABnat=C2=BB)])",
+        "current_goal_text": "var (app [global (indt =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
         "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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB), globa=
l (indt =C2=ABnat=C2=BB)])) \n (X113 =3D none) \n (X113 =3D\n   some (app [=
global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])=
)",
+        "current_goal_text": "if (var (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n (X113 =3D none) \n (X113 =
=3D\n   some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt=
 =C2=ABnat=C2=BB)]))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -58472,8 +56331,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X113 =3D some (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)])",
+                "goal_text": "X113 =3D some (app [global (indt =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
                 "goal_id": 1406
               }
             ],
@@ -58581,13 +56439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D some (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB),=
 global (indt =C2=ABnat=C2=BB)])",
+        "current_goal_text": "X113 =3D some (app [global (indt =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -59041,13 +56890,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.d=
efinition HB_unnamed_factory_27 \n     (some (app [global (indt =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n     (app\n       [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n        global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB=
)) c0 \\ c0])), \n  get-option coq:locality local =3D>\n   log.coq.argument=
s.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+        "current_goal_text": "std.do!\n [log.private.log-vernac\n   (log.p=
rivate.coq.vernac.definition HB_unnamed_factory_27 \n     (some (app [globa=
l (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n =
    (app\n       [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB), \n        global (indc =C2=ABO=C2=BB), fun `x` (global (i=
ndt =C2=ABnat=C2=BB)) c0 \\ c0])), \n  get-option coq:locality local =3D>\n=
   log.coq.arguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB)=
 [[]]]",
         "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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -59418,14 +57257,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.private.log-vernac\n (log.private.coq.vernac.defini=
tion HB_unnamed_factory_27 \n   (some (app [global (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (app\n     [global (indc=
 =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      glob=
al (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0])=
)",
+                "goal_text": "log.private.log-vernac\n (log.private.coq.ve=
rnac.definition HB_unnamed_factory_27 \n   (some (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (app\n     [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB))=
 c0 \\ c0]))",
                 "goal_id": 1407
               },
               { "goal_text": "!", "goal_id": 1408 },
               {
-                "goal_text":
-                  "std.do!\n [get-option coq:locality local =3D>\n   log.c=
oq.arguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+                "goal_text": "std.do!\n [get-option coq:locality local =3D=
>\n   log.coq.arguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=
=BB) [[]]]",
                 "goal_id": 1409
               }
             ],
@@ -59533,13 +57370,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])) \n   (app\n     [global (indc =C2=AB=
IsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      global (ind=
c =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))",
+        "current_goal_text": "log.private.log-vernac\n (log.private.coq.ve=
rnac.definition HB_unnamed_factory_27 \n   (some (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (app\n     [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB))=
 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 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:pp all]))=
, \n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-e=
xtend A1 A4).",
+                  "rule_text": "(log.private.log-vernac A0) :- (log.privat=
e.logger A1 A2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option co=
q:pp all])), \n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.priva=
te.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 =3D tt) (X117 =3D []) (X117 =3D [get-option co=
q:pp all])",
+                "goal_text": "if (X116 =3D tt) (X117 =3D []) (X117 =3D [ge=
t-option coq:pp all])",
                 "goal_id": 1412
               },
               {
-                "goal_text":
-                  "X117 =3D>\n log.private.coq.vernac->pp\n  [log.private.=
coq.vernac.definition HB_unnamed_factory_27 \n    (some (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n    (app\=
n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=AB=
nat=C2=BB)) c0 \\ c0])] X118",
+                "goal_text": "X117 =3D>\n log.private.coq.vernac->pp\n  [l=
og.private.coq.vernac.definition HB_unnamed_factory_27 \n    (some (app [gl=
obal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) =
\n    (app\n      [global (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt=
 =C2=ABnat=C2=BB), \n       global (indc =C2=ABO=C2=BB), fun `x` (global (i=
ndt =C2=ABnat=C2=BB)) c0 \\ c0])] X118",
                 "goal_id": 1413
               },
               {
@@ -59929,13 +57753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.private.log-vernac A0) :- (log.private.logger A1 A=
2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:pp all])), =
\n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-ext=
end A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.=
logger A1 A2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:=
pp all])), \n (A3 =3D> 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:pp all])), =
\n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-ext=
end A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.=
logger A1 A2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:=
pp all])), \n (A3 =3D> 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)])) \n   (app\n     [global (indc =C2=AB=
IsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \n      global (ind=
c =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB)) c0 \\ c0]))",
+        "current_goal_text": "log.private.log-vernac\n (log.private.coq.ve=
rnac.definition HB_unnamed_factory_27 \n   (some (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)])) \n   (app\n     [g=
lobal (indc =C2=ABIsSelfA'.Axioms_=C2=BB), global (indt =C2=ABnat=C2=BB), \=
n      global (indc =C2=ABO=C2=BB), fun `x` (global (indt =C2=ABnat=C2=BB))=
 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D>\n   log.coq.argum=
ents.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]]",
+        "current_goal_text": "std.do!\n [get-option coq:locality local =3D=
>\n   log.coq.arguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=
=BB) [[]]]",
         "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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -61365,8 +59156,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "get-option coq:locality local =3D>\n log.coq.arguments.=
set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]",
+                "goal_text": "get-option coq:locality local =3D>\n log.coq=
.arguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]",
                 "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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D>\n log.coq.arguments.set-impl=
icit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]",
+        "current_goal_text": "get-option coq:locality local =3D>\n log.coq=
.arguments.set-implicit (const =C2=ABHB_unnamed_factory_27=C2=BB) [[]]",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -61842,8 +59623,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.coq.arguments.set-implicit (const =C2=ABHB_unnamed_=
factory_27=C2=BB) [[]]",
+                "goal_text": "log.coq.arguments.set-implicit (const =C2=AB=
HB_unnamed_factory_27=C2=BB) [[]]",
                 "goal_id": 1418
               }
             ],
@@ -61975,13 +59755,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_=
27=C2=BB) [[]]",
+        "current_goal_text": "log.coq.arguments.set-implicit (const =C2=AB=
HB_unnamed_factory_27=C2=BB) [[]]",
         "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 A=
1, \n                                             if\n                     =
                         (get-option coq:locality local) \n                =
                              (A2 =3D tt) (A2 =3D 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-im=
plicit A0 A1, \n                                             if\n          =
                                    (get-option coq:locality local) \n     =
                                         (A2 =3D tt) (A2 =3D 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 =C2=ABHB_u=
nnamed_factory_27=C2=BB) [[]], \n  if (get-option coq:locality local) (X119=
 =3D tt) (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unnamed_factory_2=
7=C2=BB) X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implici=
t X119 X120 [[]]))]",
+                "goal_text": "std.do!\n [coq.arguments.set-implicit (const=
 =C2=ABHB_unnamed_factory_27=C2=BB) [[]], \n  if (get-option coq:locality l=
ocal) (X119 =3D tt) (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unname=
d_factory_27=C2=BB) X120 ,\n    log.private.log-vernac (log.private.coq.ver=
nac.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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_f=
actory_27=C2=BB) [[]], \n  if (get-option coq:locality local) (X119 =3D tt)=
 (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unnamed_factory_27=C2=BB)=
 X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X=
120 [[]]))]",
+        "current_goal_text": "std.do!\n [coq.arguments.set-implicit (const=
 =C2=ABHB_unnamed_factory_27=C2=BB) [[]], \n  if (get-option coq:locality l=
ocal) (X119 =3D tt) (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unname=
d_factory_27=C2=BB) X120 ,\n    log.private.log-vernac (log.private.coq.ver=
nac.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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -62866,14 +60622,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.arguments.set-implicit (const =C2=ABHB_unnamed_fact=
ory_27=C2=BB) [[]]",
+                "goal_text": "coq.arguments.set-implicit (const =C2=ABHB_u=
nnamed_factory_27=C2=BB) [[]]",
                 "goal_id": 1420
               },
               { "goal_text": "!", "goal_id": 1421 },
               {
-                "goal_text":
-                  "std.do!\n [if (get-option coq:locality local) (X119 =3D=
 tt) (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unnamed_factory_27=C2=
=BB) X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X1=
19 X120 [[]]))]",
+                "goal_text": "std.do!\n [if (get-option coq:locality local=
) (X119 =3D tt) (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unnamed_fa=
ctory_27=C2=BB) 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=
=C2=BB) [[]]",
+        "current_goal_text": "coq.arguments.set-implicit (const =C2=ABHB_u=
nnamed_factory_27=C2=BB) [[]]",
         "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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt) (X1=
19 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unnamed_factory_27=C2=BB) X12=
0 ,\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 =3D tt) (X119 =3D ff), \n  (coq.gref->id (const =C2=ABHB_unnamed_fa=
ctory_27=C2=BB) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -63947,14 +61676,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (get-option coq:locality local) (X119 =3D tt) (X119 =
=3D ff)",
+                "goal_text": "if (get-option coq:locality local) (X119 =3D=
 tt) (X119 =3D ff)",
                 "goal_id": 1423
               },
               { "goal_text": "!", "goal_id": 1424 },
               {
-                "goal_text":
-                  "std.do!\n [(coq.gref->id (const =C2=ABHB_unnamed_factor=
y_27=C2=BB) X120 ,\n    log.private.log-vernac (log.private.coq.vernac.impl=
icit X119 X120 [[]]))]",
+                "goal_text": "std.do!\n [(coq.gref->id (const =C2=ABHB_unn=
amed_factory_27=C2=BB) 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt) (X119 =3D ff)",
+        "current_goal_text": "if (get-option coq:locality local) (X119 =3D=
 tt) (X119 =3D 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt) (X119 =
=3D ff)",
+              "goal_text": "if (get-option coq:locality local) (X119 =3D t=
t) (X119 =3D 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=C2=
=BB) X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit tt=
 X120 [[]]))]",
+        "current_goal_text": "std.do!\n [(coq.gref->id (const =C2=ABHB_unn=
amed_factory_27=C2=BB) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -66251,8 +63934,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.gref->id (const =C2=ABHB_unnamed_factory_27=C2=BB) =
X120 ,\n log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[=
]])",
+                "goal_text": "coq.gref->id (const =C2=ABHB_unnamed_factory=
_27=C2=BB) 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=C2=BB) X120 ,\n=
 log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
+        "current_goal_text": "coq.gref->id (const =C2=ABHB_unnamed_factory=
_27=C2=BB) 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 =C2=ABHB_unnamed_factory_27=C2=BB) =
X120",
+                "goal_text": "coq.gref->id (const =C2=ABHB_unnamed_factory=
_27=C2=BB) 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.vern=
ac.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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=C2=BB) X120",
+        "current_goal_text": "coq.gref->id (const =C2=ABHB_unnamed_factory=
_27=C2=BB) 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ve=
rnac.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 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:pp all]))=
, \n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-e=
xtend A1 A4).",
+                  "rule_text": "(log.private.log-vernac A0) :- (log.privat=
e.logger A1 A2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option co=
q:pp all])), \n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.priva=
te.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 =3D tt) (X123 =3D []) (X123 =3D [get-option co=
q:pp all])",
+                "goal_text": "if (X122 =3D tt) (X123 =3D []) (X123 =3D [ge=
t-option coq:pp all])",
                 "goal_id": 1437
               },
               {
-                "goal_text":
-                  "X123 =3D>\n log.private.coq.vernac->pp\n  [log.private.=
coq.vernac.implicit tt HB_unnamed_factory_27 [[]]] X124",
+                "goal_text": "X123 =3D>\n log.private.coq.vernac->pp\n  [l=
og.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 A=
2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:pp all])), =
\n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-ext=
end A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.=
logger A1 A2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:=
pp all])), \n (A3 =3D> 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/lo=
g.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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:pp all])), =
\n (A3 =3D> log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-ext=
end A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.=
logger A1 A2), (!), \n (if (A2 =3D tt) (A3 =3D []) (A3 =3D [get-option coq:=
pp all])), \n (A3 =3D> 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/lo=
g.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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.ve=
rnac.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/lo=
g.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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D tt) (A2 =3D 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) :- (s=
td.do!\n                                            [coq.arguments.set-impl=
icit A0 A1, \n                                             if\n            =
                                  (get-option coq:locality local) \n       =
                                       (A2 =3D tt) (A2 =3D 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/lo=
g.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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
3 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                                                                    :=
=3D 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 =3D none) \n                           =
                                         (\n                               =
                                     A5 =3D\n                              =
                                      some A2), \n                         =
                                          log.private.log-vernac\n         =
                                                           (\n             =
                                                       log.private.coq.vern=
ac.definition\n                                                            =
        A0 A5 A1), \n                                                      =
             get-option\n                                                  =
                  coq:locality \n                                          =
                          local =3D>\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 inf=
ormation in \n                                                             =
       A0 : A6 \n                                                          =
          :=3D 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 =3D none) \n                =
                                                    (\n                    =
                                                A5 =3D\n                   =
                                                 some A2), \n              =
                                                     log.private.log-vernac=
\n                                                                    (\n  =
                                                                  log.priva=
te.coq.vernac.definition\n                                                 =
                   A0 A5 A1), \n                                           =
                        get-option\n                                       =
                             coq:locality \n                               =
                                     local =3D>\n                          =
                                          log.coq.arguments.set-implicit\n =
                                                                   (const A=
4) \n                                                                    [[=
]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/lo=
g.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D global (const =C2=ABHB_unnamed_factory_27=C2=
=BB), \n  std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X88 | _], \n  instanc=
e.private.check-non-forgetful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity=
 _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sectio=
n) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [X87 =3D global (const =C2=ABHB_un=
named_factory_27=C2=BB), \n  std.drop 0 [global (indt =C2=ABnat=C2=BB)] [X8=
8 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt=
 =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt=
 =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (app=
 [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)=
]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closi=
ng 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -71423,8 +68999,7 @@
               },
               { "goal_text": "!", "goal_id": 1441 },
               {
-                "goal_text":
-                  "std.do!\n [std.drop 0 [global (indt =C2=ABnat=C2=BB)] [=
X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n   (arity (a=
pp [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 c=
losing instance section) ,\n     log.coq.env.end-section-name X76), acc-cla=
uses current X89]",
+                "goal_text": "std.do!\n [std.drop 0 [global (indt =C2=ABna=
t=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X=
88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-i=
nstance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 X87 X89 \n   X90, \n  if\n =
  (arity (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) =3D\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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)] [X88 | _]=
, \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) X88 \n   (global (const =C2=ABHB_unnamed_factory=
_27=C2=BB)) X89 X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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 =C2=ABna=
t=C2=BB)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X=
88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.declare-i=
nstance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 \n   (global (const =C2=ABH=
B_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arity (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sec=
tion) ,\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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -72178,8 +69739,7 @@
               },
               { "goal_text": "!", "goal_id": 1444 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.check-non-forgetful-inherit=
ance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.private.dec=
lare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 \n   (global (const =
=C2=ABHB_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arity (app [global=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n=
     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing insta=
nce section) ,\n     log.coq.env.end-section-name X76), acc-clauses current=
 X89]",
+                "goal_text": "std.do!\n [instance.private.check-non-forget=
ful-inheritance X88 \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  instance.=
private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) X88 \n   (glob=
al (const =C2=ABHB_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arity (a=
pp [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=
=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 c=
losing instance section) ,\n     log.coq.env.end-section-name X76), acc-cla=
uses 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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.dr=
op 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 (gl=
obal (indt =C2=ABnat=C2=BB)) \n   (indt =C2=ABIsSelfA'.axioms_=C2=BB), \n  =
instance.private.declare-instance (indt =C2=ABIsSelfA'.axioms_=C2=BB) \n   =
(global (indt =C2=ABnat=C2=BB)) (global (const =C2=ABHB_unnamed_factory_27=
=C2=BB)) X89 X90, \n  if\n   (arity (app [global (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     arity _) true \n   (if=
-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.co=
q.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [instance.private.check-non-forget=
ful-inheritance (global (indt =C2=ABnat=C2=BB)) \n   (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB), \n  instance.private.declare-instance (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB) \n   (global (indt =C2=ABnat=C2=BB)) (global (const =C2=ABHB_=
unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arity (app [global (indt =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sec=
tion) ,\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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -73044,14 +70588,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.check-non-forgetful-inheritance (globa=
l (indt =C2=ABnat=C2=BB)) \n (indt =C2=ABIsSelfA'.axioms_=C2=BB)",
+                "goal_text": "instance.private.check-non-forgetful-inherit=
ance (global (indt =C2=ABnat=C2=BB)) \n (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
",
                 "goal_id": 1447
               },
               { "goal_text": "!", "goal_id": 1448 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) \n   (global (indt =C2=ABnat=C2=BB)) (global (co=
nst =C2=ABHB_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arity (app [gl=
obal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
=3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing =
instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses cu=
rrent X89]",
+                "goal_text": "std.do!\n [instance.private.declare-instance=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB) \n   (global (indt =C2=ABnat=C2=BB)) (=
global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arit=
y (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X9=
1 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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =
=C2=ABnat=C2=BB)) \n (indt =C2=ABIsSelfA'.axioms_=C2=BB)",
-        "current_goal_predicate":
-          "instance.private.check-non-forgetful-inheritance",
+        "current_goal_text": "instance.private.check-non-forgetful-inherit=
ance (global (indt =C2=ABnat=C2=BB)) \n (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
",
+        "current_goal_predicate": "instance.private.check-non-forgetful-in=
heritance",
         "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-inhe=
ritance _ _) :- (get-option\n                                              =
              non_forgetful_inheritance \n                                 =
                           tt), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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-inheri=
tance _ _) :- (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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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-inheri=
tance _ _) :- (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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =
=C2=ABnat=C2=BB)) \n (indt =C2=ABIsSelfA'.axioms_=C2=BB)",
-        "current_goal_predicate":
-          "instance.private.check-non-forgetful-inheritance",
+        "current_goal_text": "instance.private.check-non-forgetful-inherit=
ance (global (indt =C2=ABnat=C2=BB)) \n (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
",
+        "current_goal_predicate": "instance.private.check-non-forgetful-in=
heritance",
         "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                                                                (c=
oq.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 h=
ierarchy to make \n                                                        =
            A4 \n                                                          =
          depend on \n                                                     =
               A6 \n                                                       =
             See the paper \"Competing inheritance paths in \n             =
                                                       dependent type theor=
y\" (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 encapsu=
late 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-inh=
eritance.v \n                                                              =
      to witness devastating effects.)) \n                                 =
                               true]).",
+                  "rule_text": "(instance.private.check-non-forgetful-inhe=
ritance 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-inheritan=
ce \n                                                                    no=
n forgetful inheritance detected.\n \n                                     =
                               You have two solutions: \n                  =
                                                  1. (Best practice) Reorga=
nize 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 a=
ttribute #[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 r=
est 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-fo=
rgetful-inheritance.v \n                                                   =
                 to witness devastating effects.)) \n                      =
                                          true]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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 =C2=
=ABnat=C2=BB)) (global (const X125)) _ ,\n     structure-key X125 _ X126) \=
n   (, (nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 hiera=
rchy to make X127 depend on \n       X129 See the paper \"Competing inherit=
ance paths in \n       dependent type theory\" (https://hal.inria.fr/hal-02=
463336) for more \n       explanations \n       2. Use the attribute #[non_=
forgetful_inheritance] to disable this check. \n       We strongly advise y=
ou 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 deman=
d. See the above paper and the file \n       https://github.com/math-comp/h=
ierarchy-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 =C2=ABnat=C2=BB)) (global (const X125)) _ ,\n     structure-key X125=
 _ X126) \n   (, (nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X12=
7) \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 \"Competi=
ng inheritance paths in \n       dependent type theory\" (https://hal.inria=
.fr/hal-02463336) for more \n       explanations \n       2. Use the attrib=
ute #[non_forgetful_inheritance] to disable this check. \n       We strongl=
y advise you encapsulate this instance inside a module, \n       in order t=
o isolate it from the rest of the code, and to be able \n       to import i=
t on demand. See the above paper and the file \n       https://github.com/m=
ath-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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=
=BB)) (global (const X125)) _ ,\n     structure-key X125 _ X126) \n   (, (n=
ice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X127) \n     (nice-gre=
f->string X126 X128 , calc (X128 ^ .) X129) \n     (coq.warning HB HB.non-f=
orgetful-inheritance \n       non forgetful inheritance detected.\n You hav=
e two solutions: \n       1. (Best practice) Reorganize your hierarchy to m=
ake X127 depend on \n       X129 See the paper \"Competing inheritance path=
s in \n       dependent type theory\" (https://hal.inria.fr/hal-02463336) f=
or more \n       explanations \n       2. Use the attribute #[non_forgetful=
_inheritance] to disable this check. \n       We strongly advise you encaps=
ulate this instance inside a module, \n       in order to isolate it from t=
he rest of the code, and to be able \n       to import it on demand. See th=
e above paper and the file \n       https://github.com/math-comp/hierarchy-=
builder/blob/master/tests/non-forgetful-inheritance.v \n       to witness d=
evastating effects.)) true]",
+        "current_goal_text": "std.do!\n [if\n   (coq.safe-dest-app (global=
 (indt =C2=ABnat=C2=BB)) (global (const X125)) _ ,\n     structure-key X125=
 _ X126) \n   (, (nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X12=
7) \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 \"Competi=
ng inheritance paths in \n       dependent type theory\" (https://hal.inria=
.fr/hal-02463336) for more \n       explanations \n       2. Use the attrib=
ute #[non_forgetful_inheritance] to disable this check. \n       We strongl=
y advise you encapsulate this instance inside a module, \n       in order t=
o isolate it from the rest of the code, and to be able \n       to import i=
t on demand. See the above paper and the file \n       https://github.com/m=
ath-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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -74743,8 +72244,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (coq.safe-dest-app (global (indt =C2=ABnat=C2=BB))=
 (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref-=
>string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X127) \n   (nice-gref->string X=
126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inhe=
ritance \n     non forgetful inheritance detected.\n You have two solutions=
: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend o=
n \n     X129 See the paper \"Competing inheritance paths in \n     depende=
nt type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explan=
ations \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 b=
e 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-for=
getful-inheritance.v \n     to witness devastating effects.)) true",
+                "goal_text": "if\n (coq.safe-dest-app (global (indt =C2=AB=
nat=C2=BB)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, =
(nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X127) \n   (nice-gre=
f->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-for=
getful-inheritance \n     non forgetful inheritance detected.\n You have tw=
o solutions: \n     1. (Best practice) Reorganize your hierarchy to make X1=
27 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 insta=
nce inside a module, \n     in order to isolate it from the rest of the cod=
e, and to be able \n     to import it on demand. See the above paper and th=
e file \n     https://github.com/math-comp/hierarchy-builder/blob/master/te=
sts/non-forgetful-inheritance.v \n     to witness devastating effects.)) tr=
ue",
                 "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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) (global=
 (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string =
(indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 che=
ck. \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-i=
nheritance.v \n     to witness devastating effects.)) true",
+        "current_goal_text": "if\n (coq.safe-dest-app (global (indt =C2=AB=
nat=C2=BB)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, =
(nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X127) \n   (nice-gre=
f->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-for=
getful-inheritance \n     non forgetful inheritance detected.\n You have tw=
o solutions: \n     1. (Best practice) Reorganize your hierarchy to make X1=
27 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 insta=
nce inside a module, \n     in order to isolate it from the rest of the cod=
e, and to be able \n     to import it on demand. See the above paper and th=
e file \n     https://github.com/math-comp/hierarchy-builder/blob/master/te=
sts/non-forgetful-inheritance.v \n     to witness devastating effects.)) tr=
ue",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -75205,14 +72696,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app (global (indt =C2=ABnat=C2=BB)) (glob=
al (const X125)) _ ,\n structure-key X125 _ X126",
+                "goal_text": "coq.safe-dest-app (global (indt =C2=ABnat=C2=
=BB)) (global (const X125)) _ ,\n structure-key X125 _ X126",
                 "goal_id": 1456
               },
               { "goal_text": "!", "goal_id": 1457 },
               {
-                "goal_text":
-                  ", (nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB=
) X127) \n (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n (coq.war=
ning HB HB.non-forgetful-inheritance \n   non forgetful inheritance detecte=
d.\n You have two solutions: \n   1. (Best practice) Reorganize your hierar=
chy to make X127 depend on X129 \n   See the paper \"Competing inheritance =
paths in \n   dependent type theory\" (https://hal.inria.fr/hal-02463336) f=
or more \n   explanations \n   2. Use the attribute #[non_forgetful_inherit=
ance] to disable this check. \n   We strongly advise you encapsulate this i=
nstance inside a module, \n   in order to isolate it from the rest of the c=
ode, and to be able \n   to import it on demand. See the above paper and th=
e file \n   https://github.com/math-comp/hierarchy-builder/blob/master/test=
s/non-forgetful-inheritance.v \n   to witness devastating effects.)",
+                "goal_text": ", (nice-gref->string (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X127) \n (nice-gref->string X126 X128 , calc (X128 ^ .) X129) =
\n (coq.warning HB HB.non-forgetful-inheritance \n   non forgetful inherita=
nce detected.\n You have two solutions: \n   1. (Best practice) Reorganize =
your hierarchy to make X127 depend on X129 \n   See the paper \"Competing i=
nheritance paths in \n   dependent type theory\" (https://hal.inria.fr/hal-=
02463336) for more \n   explanations \n   2. Use the attribute #[non_forget=
ful_inheritance] to disable this check. \n   We strongly advise you encapsu=
late this instance inside a module, \n   in order to isolate it from the re=
st of the code, and to be able \n   to import it on demand. See the above p=
aper and the file \n   https://github.com/math-comp/hierarchy-builder/blob/=
master/tests/non-forgetful-inheritance.v \n   to witness devastating effect=
s.)",
                 "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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) (global (cons=
t X125)) _ ,\n structure-key X125 _ X126",
+        "current_goal_text": "coq.safe-dest-app (global (indt =C2=ABnat=C2=
=BB)) (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 =C2=ABnat=C2=BB)) (glob=
al (const X125)) _",
+                "goal_text": "coq.safe-dest-app (global (indt =C2=ABnat=C2=
=BB)) (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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) (global (cons=
t X125)) _",
+        "current_goal_text": "coq.safe-dest-app (global (indt =C2=ABnat=C2=
=BB)) (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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) (global=
 (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string =
(indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 che=
ck. \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-i=
nheritance.v \n     to witness devastating effects.)) true",
+        "current_goal_text": "if\n (coq.safe-dest-app (global (indt =C2=AB=
nat=C2=BB)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, =
(nice-gref->string (indt =C2=ABIsSelfA'.axioms_=C2=BB) X127) \n   (nice-gre=
f->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-for=
getful-inheritance \n     non forgetful inheritance detected.\n You have tw=
o solutions: \n     1. (Best practice) Reorganize your hierarchy to make X1=
27 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 insta=
nce inside a module, \n     in order to isolate it from the rest of the cod=
e, and to be able \n     to import it on demand. See the above paper and th=
e file \n     https://github.com/math-comp/hierarchy-builder/blob/master/te=
sts/non-forgetful-inheritance.v \n     to witness devastating effects.)) tr=
ue",
         "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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 i=
nheritance detected.\n \n                                                  =
                  You have two solutions: \n                               =
                                     1. (Best practice) Reorganize your hie=
rarchy 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 #[no=
n_forgetful_inheritance] to disable this check. \n                         =
                                           We strongly advise you encapsula=
te this instance inside a module, \n                                       =
                             in order to isolate it from the rest of the co=
de, and to be able \n                                                      =
              to import it on demand. See the above paper and the file \n  =
                                                                  https://g=
ithub.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inher=
itance.v \n                                                                =
    to witness devastating effects.)) \n                                   =
                             true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheri=
tance 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) Reorgani=
ze your hierarchy to make \n                                               =
                     A4 \n                                                 =
                   depend on \n                                            =
                        A6 \n                                              =
                      See the paper \"Competing inheritance paths in \n    =
                                                                dependent t=
ype theory\" (https://hal.inria.fr/hal-02463336) for more \n               =
                                                     explanations \n       =
                                                             2. Use the att=
ribute #[non_forgetful_inheritance] to disable this check. \n              =
                                                      We strongly advise yo=
u encapsulate this instance inside a module, \n                            =
                                        in order to isolate it from the res=
t of the code, and to be able \n                                           =
                         to import it on demand. See the above paper and th=
e file \n                                                                  =
  https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forg=
etful-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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelf=
A'.axioms_=C2=BB) \n   (global (indt =C2=ABnat=C2=BB)) (global (const =C2=
=ABHB_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arity (app [global (i=
ndt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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 X8=
9]",
+        "current_goal_text": "std.do!\n [instance.private.declare-instance=
 (indt =C2=ABIsSelfA'.axioms_=C2=BB) \n   (global (indt =C2=ABnat=C2=BB)) (=
global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X89 X90, \n  if\n   (arit=
y (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=
=C2=BB)]) =3D\n     arity _) true \n   (if-verbose (header X91 , coq.say X9=
1 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -78064,14 +75499,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.declare-instance (indt =C2=ABIsSelfA'.=
axioms_=C2=BB) \n (global (indt =C2=ABnat=C2=BB)) (global (const =C2=ABHB_u=
nnamed_factory_27=C2=BB)) X89 X90",
+                "goal_text": "instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) \n (global (indt =C2=ABnat=C2=BB)) (global (cons=
t =C2=ABHB_unnamed_factory_27=C2=BB)) X89 X90",
                 "goal_id": 1462
               },
               { "goal_text": "!", "goal_id": 1463 },
               {
-                "goal_text":
-                  "std.do!\n [if\n   (arity (app [global (indt =C2=ABIsSel=
fA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\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 =
=C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =3D\n     ar=
ity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance sec=
tion) ,\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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=
=C2=BB) \n (global (indt =C2=ABnat=C2=BB)) (global (const =C2=ABHB_unnamed_=
factory_27=C2=BB)) X89 X90",
+        "current_goal_text": "instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) \n (global (indt =C2=ABnat=C2=BB)) (global (cons=
t =C2=ABHB_unnamed_factory_27=C2=BB)) 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                                                        (bu=
ilder-from A1 A5 \n                                                        =
  A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: decla=
re-instance: cannot make builders local.\n    If you want temporary instanc=
es, make an alias, e.g. with let T' :=3D T) \n   true), (!), \n (instance.p=
rivate.declare-canonical-instances-from-factory-and-local-builders\n   A0 A=
1 A2 A5 A6 A3 A4).",
+                  "rule_text": "(instance.private.declare-instance A0 A1 A=
2 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 tempor=
ary instances, make an alias, e.g. with let T' :=3D T) \n   true), (!), \n =
(instance.private.declare-canonical-instances-from-factory-and-local-builde=
rs\n   A0 A1 A2 A5 A6 A3 A4).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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 =C2=ABnat=C2=
=BB)) X130 X131 _)",
+                "goal_text": "current-mode (builder-from (global (indt =C2=
=ABnat=C2=BB)) 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' :=3D T) \n true",
+                "goal_text": "if (get-option local tt) \n (coq.error\n   H=
B: declare-instance: cannot make builders local.\n    If you want temporary=
 instances, make an alias, e.g. with let T' :=3D T) \n true",
                 "goal_id": 1467
               },
               { "goal_text": "!", "goal_id": 1468 },
               {
-                "goal_text":
-                  "instance.private.declare-canonical-instances-from-facto=
ry-and-local-builders\n (indt =C2=ABIsSelfA'.axioms_=C2=BB) (global (indt =
=C2=ABnat=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X13=
0 X131 X89 X90",
+                "goal_text": "instance.private.declare-canonical-instances=
-from-factory-and-local-builders\n (indt =C2=ABIsSelfA'.axioms_=C2=BB) (glo=
bal (indt =C2=ABnat=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_27=
=C2=BB)) 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                                                        (buil=
der-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' :=3D T) \n   true), (!), \n (instance.pri=
vate.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 temporar=
y instances, make an alias, e.g. with let T' :=3D T) \n   true), (!), \n (i=
nstance.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) X130=
 X131 _)",
+        "current_goal_text": "current-mode (builder-from (global (indt =C2=
=ABnat=C2=BB)) 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                                                        (buil=
der-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' :=3D T) \n   true), (!), \n (instance.pri=
vate.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 temporar=
y instances, make an alias, e.g. with let T' :=3D T) \n   true), (!), \n (i=
nstance.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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=
=C2=BB) \n (global (indt =C2=ABnat=C2=BB)) (global (const =C2=ABHB_unnamed_=
factory_27=C2=BB)) X89 X90",
+        "current_goal_text": "instance.private.declare-instance (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) \n (global (indt =C2=ABnat=C2=BB)) (global (cons=
t =C2=ABHB_unnamed_factory_27=C2=BB)) 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 =3D pr c2 c3 , c1 =3D ins=
tance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                  "rule_text": "(instance.private.declare-instance A0 A1 A=
2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n   =
                                                     A0 A1 A2 A4), \n (if (=
get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (=
c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 ,=
 c1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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-facto=
ry\n (indt =C2=ABIsSelfA'.axioms_=C2=BB) (global (indt =C2=ABnat=C2=BB)) \n=
 (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X90",
+                "goal_text": "instance.private.declare-canonical-instances=
-from-factory\n (indt =C2=ABIsSelfA'.axioms_=C2=BB) (global (indt =C2=ABnat=
=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X90",
                 "goal_id": 1470
               },
               {
-                "goal_text":
-                  "if (get-option export tt) \n (coq.env.current-library X=
132 ,\n   std.map X90 (c0 \\ c1 \\\n    sigma c2 \\ sigma c3 \\ c0 =3D pr c=
2 c3 , c1 =3D instance-to-export X132 c2 c3) \n    X89) (X89 =3D [])",
+                "goal_text": "if (get-option export tt) \n (coq.env.curren=
t-library X132 ,\n   std.map X90 (c0 \\ c1 \\\n    sigma c2 \\ sigma c3 \\ =
c0 =3D pr c2 c3 , c1 =3D instance-to-export X132 c2 c3) \n    X89) (X89 =3D=
 [])",
                 "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB) (global (indt =C2=ABnat=C2=BB)) \n (global=
 (const =C2=ABHB_unnamed_factory_27=C2=BB)) X90",
-        "current_goal_predicate":
-          "instance.private.declare-canonical-instances-from-factory",
+        "current_goal_text": "instance.private.declare-canonical-instances=
-from-factory\n (indt =C2=ABIsSelfA'.axioms_=C2=BB) (global (indt =C2=ABnat=
=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X90",
+        "current_goal_predicate": "instance.private.declare-canonical-inst=
ances-from-factory",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -79846,13 +77235,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.declare-canonical-instances-from-fa=
ctory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factor=
y.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n     =
 [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.pr=
ivate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 =
, instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                  "rule_text": "(instance.private.declare-canonical-instan=
ces-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-=
from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do!=
 A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       =
instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes=
-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instanc=
e.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 =C2=ABnat=C2=BB)) \n   (global (const =C2=ABHB_unnamed_factory=
_27=C2=BB)) \n   [synthesis.under-local-canonical-mixins-of.do! (global (in=
dt =C2=ABnat=C2=BB)) \n     [(factory-provides (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X133 ,\n        list-w-params_list X133 X134), \n      instance.pri=
vate.add-all-mixins (global (indt =C2=ABnat=C2=BB)) \n       (indt =C2=ABIs=
SelfA'.axioms_=C2=BB) X134 tt _ X135, \n      (findall-classes-for X134 X13=
6 ,\n        instance.declare-all (global (indt =C2=ABnat=C2=BB)) X136 X137=
)]], \n  std.append X135 X137 X90]",
+                "goal_text": "std.do!\n [synthesis.under-mixin-src-from-fa=
ctory.do! (global (indt =C2=ABnat=C2=BB)) \n   (global (const =C2=ABHB_unna=
med_factory_27=C2=BB)) \n   [synthesis.under-local-canonical-mixins-of.do! =
(global (indt =C2=ABnat=C2=BB)) \n     [(factory-provides (indt =C2=ABIsSel=
fA'.axioms_=C2=BB) X133 ,\n        list-w-params_list X133 X134), \n      i=
nstance.private.add-all-mixins (global (indt =C2=ABnat=C2=BB)) \n       (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _ X135, \n      (findall-classes-f=
or X134 X136 ,\n        instance.declare-all (global (indt =C2=ABnat=C2=BB)=
) 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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABnat=C2=BB)) \n   (global (const =C2=ABHB_unnamed_factory_27=C2=
=BB)) \n   [synthesis.under-local-canonical-mixins-of.do! (global (indt =C2=
=ABnat=C2=BB)) \n     [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=BB=
) X133 ,\n        list-w-params_list X133 X134), \n      instance.private.a=
dd-all-mixins (global (indt =C2=ABnat=C2=BB)) \n       (indt =C2=ABIsSelfA'=
.axioms_=C2=BB) X134 tt _ X135, \n      (findall-classes-for X134 X136 ,\n =
       instance.declare-all (global (indt =C2=ABnat=C2=BB)) X136 X137)]], \=
n  std.append X135 X137 X90]",
+        "current_goal_text": "std.do!\n [synthesis.under-mixin-src-from-fa=
ctory.do! (global (indt =C2=ABnat=C2=BB)) \n   (global (const =C2=ABHB_unna=
med_factory_27=C2=BB)) \n   [synthesis.under-local-canonical-mixins-of.do! =
(global (indt =C2=ABnat=C2=BB)) \n     [(factory-provides (indt =C2=ABIsSel=
fA'.axioms_=C2=BB) X133 ,\n        list-w-params_list X133 X134), \n      i=
nstance.private.add-all-mixins (global (indt =C2=ABnat=C2=BB)) \n       (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _ X135, \n      (findall-classes-f=
or X134 X136 ,\n        instance.declare-all (global (indt =C2=ABnat=C2=BB)=
) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -80350,8 +77724,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "synthesis.under-mixin-src-from-factory.do! (global (ind=
t =C2=ABnat=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) \=
n [synthesis.under-local-canonical-mixins-of.do! (global (indt =C2=ABnat=C2=
=BB)) \n   [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=BB) X133 ,\n =
     list-w-params_list X133 X134), \n    instance.private.add-all-mixins (=
global (indt =C2=ABnat=C2=BB)) \n     (indt =C2=ABIsSelfA'.axioms_=C2=BB) X=
134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      instance.decla=
re-all (global (indt =C2=ABnat=C2=BB)) X136 X137)]]",
+                "goal_text": "synthesis.under-mixin-src-from-factory.do! (=
global (indt =C2=ABnat=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_2=
7=C2=BB)) \n [synthesis.under-local-canonical-mixins-of.do! (global (indt =
=C2=ABnat=C2=BB)) \n   [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) X133 ,\n      list-w-params_list X133 X134), \n    instance.private.ad=
d-all-mixins (global (indt =C2=ABnat=C2=BB)) \n     (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      =
instance.declare-all (global (indt =C2=ABnat=C2=BB)) X136 X137)]]",
                 "goal_id": 1473
               },
               { "goal_text": "!", "goal_id": 1474 },
@@ -80388,13 +77761,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=AB=
nat=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) \n [synth=
esis.under-local-canonical-mixins-of.do! (global (indt =C2=ABnat=C2=BB)) \n=
   [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=BB) X133 ,\n      lis=
t-w-params_list X133 X134), \n    instance.private.add-all-mixins (global (=
indt =C2=ABnat=C2=BB)) \n     (indt =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _=
 X135, \n    (findall-classes-for X134 X136 ,\n      instance.declare-all (=
global (indt =C2=ABnat=C2=BB)) X136 X137)]]",
-        "current_goal_predicate":
-          "synthesis.under-mixin-src-from-factory.do!",
+        "current_goal_text": "synthesis.under-mixin-src-from-factory.do! (=
global (indt =C2=ABnat=C2=BB)) \n (global (const =C2=ABHB_unnamed_factory_2=
7=C2=BB)) \n [synthesis.under-local-canonical-mixins-of.do! (global (indt =
=C2=ABnat=C2=BB)) \n   [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) X133 ,\n      list-w-params_list X133 X134), \n    instance.private.ad=
d-all-mixins (global (indt =C2=ABnat=C2=BB)) \n     (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      =
instance.declare-all (global (indt =C2=ABnat=C2=BB)) 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                                                           [s=
ynthesis.private.factory-instance->new-mixins\n                            =
                                 [] A1 A3, \n                              =
                              std.map A3 (c0 \\\n                          =
                                   (c1 \\\n                                =
                             (c1 =3D\n                                     =
                          mixin-src A0 \n                                  =
                              c0 A1))) A4, \n                              =
                              A4 =3D> std.do! A2]).",
+                  "rule_text": "(synthesis.under-mixin-src-from-factory.do=
! A0 A1 A2) :- (std.do!\n                                                  =
         [synthesis.private.factory-instance->new-mixins\n                 =
                                            [] A1 A3, \n                   =
                                         std.map A3 (c0 \\\n               =
                                              (c1 \\\n                     =
                                        (c1 =3D\n                          =
                                     mixin-src A0 \n                       =
                                         c0 A1))) A4, \n                   =
                                         A4 =3D> std.do! A2]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/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-mixi=
ns [] \n   (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X138, \n  std=
.map X138 (c0 \\ c1 \\\n   c1 =3D\n    mixin-src (global (indt =C2=ABnat=C2=
=BB)) c0 \n     (global (const =C2=ABHB_unnamed_factory_27=C2=BB))) X139, \=
n  X139 =3D>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do=
! (global (indt =C2=ABnat=C2=BB)) \n      [(factory-provides (indt =C2=ABIs=
SelfA'.axioms_=C2=BB) X133 ,\n         list-w-params_list X133 X134), \n   =
    instance.private.add-all-mixins (global (indt =C2=ABnat=C2=BB)) \n     =
   (indt =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _ X135, \n       (findall-cl=
asses-for X134 X136 ,\n         instance.declare-all (global (indt =C2=ABna=
t=C2=BB)) X136 X137)]]]",
+                "goal_text": "std.do!\n [synthesis.private.factory-instanc=
e->new-mixins [] \n   (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X1=
38, \n  std.map X138 (c0 \\ c1 \\\n   c1 =3D\n    mixin-src (global (indt =
=C2=ABnat=C2=BB)) c0 \n     (global (const =C2=ABHB_unnamed_factory_27=C2=
=BB))) X139, \n  X139 =3D>\n   std.do!\n    [synthesis.under-local-canonica=
l-mixins-of.do! (global (indt =C2=ABnat=C2=BB)) \n      [(factory-provides =
(indt =C2=ABIsSelfA'.axioms_=C2=BB) X133 ,\n         list-w-params_list X13=
3 X134), \n       instance.private.add-all-mixins (global (indt =C2=ABnat=
=C2=BB)) \n        (indt =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _ X135, \n  =
     (findall-classes-for X134 X136 ,\n         instance.declare-all (globa=
l (indt =C2=ABnat=C2=BB)) 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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=C2=BB)) X138, \n  std.map X13=
8 (c0 \\ c1 \\\n   c1 =3D\n    mixin-src (global (indt =C2=ABnat=C2=BB)) c0=
 \n     (global (const =C2=ABHB_unnamed_factory_27=C2=BB))) X139, \n  X139 =
=3D>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (globa=
l (indt =C2=ABnat=C2=BB)) \n      [(factory-provides (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB) X133 ,\n         list-w-params_list X133 X134), \n       inst=
ance.private.add-all-mixins (global (indt =C2=ABnat=C2=BB)) \n        (indt=
 =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _ X135, \n       (findall-classes-fo=
r X134 X136 ,\n         instance.declare-all (global (indt =C2=ABnat=C2=BB)=
) X136 X137)]]]",
+        "current_goal_text": "std.do!\n [synthesis.private.factory-instanc=
e->new-mixins [] \n   (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X1=
38, \n  std.map X138 (c0 \\ c1 \\\n   c1 =3D\n    mixin-src (global (indt =
=C2=ABnat=C2=BB)) c0 \n     (global (const =C2=ABHB_unnamed_factory_27=C2=
=BB))) X139, \n  X139 =3D>\n   std.do!\n    [synthesis.under-local-canonica=
l-mixins-of.do! (global (indt =C2=ABnat=C2=BB)) \n      [(factory-provides =
(indt =C2=ABIsSelfA'.axioms_=C2=BB) X133 ,\n         list-w-params_list X13=
3 X134), \n       instance.private.add-all-mixins (global (indt =C2=ABnat=
=C2=BB)) \n        (indt =C2=ABIsSelfA'.axioms_=C2=BB) X134 tt _ X135, \n  =
     (findall-classes-for X134 X136 ,\n         instance.declare-all (globa=
l (indt =C2=ABnat=C2=BB)) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -81380,14 +78724,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "synthesis.private.factory-instance->new-mixins [] \n (g=
lobal (const =C2=ABHB_unnamed_factory_27=C2=BB)) X138",
+                "goal_text": "synthesis.private.factory-instance->new-mixi=
ns [] \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X138",
                 "goal_id": 1477
               },
               { "goal_text": "!", "goal_id": 1478 },
               {
-                "goal_text":
-                  "std.do!\n [std.map X138 (c0 \\ c1 \\\n   c1 =3D\n    mi=
xin-src (global (indt =C2=ABnat=C2=BB)) c0 \n     (global (const =C2=ABHB_u=
nnamed_factory_27=C2=BB))) X139, \n  X139 =3D>\n   std.do!\n    [synthesis.=
under-local-canonical-mixins-of.do! (global (indt =C2=ABnat=C2=BB)) \n     =
 [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=BB) X133 ,\n         li=
st-w-params_list X133 X134), \n       instance.private.add-all-mixins (glob=
al (indt =C2=ABnat=C2=BB)) \n        (indt =C2=ABIsSelfA'.axioms_=C2=BB) X1=
34 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.=
declare-all (global (indt =C2=ABnat=C2=BB)) X136 X137)]]]",
+                "goal_text": "std.do!\n [std.map X138 (c0 \\ c1 \\\n   c1 =
=3D\n    mixin-src (global (indt =C2=ABnat=C2=BB)) c0 \n     (global (const=
 =C2=ABHB_unnamed_factory_27=C2=BB))) X139, \n  X139 =3D>\n   std.do!\n    =
[synthesis.under-local-canonical-mixins-of.do! (global (indt =C2=ABnat=C2=
=BB)) \n      [(factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=BB) X133 ,=
\n         list-w-params_list X133 X134), \n       instance.private.add-all=
-mixins (global (indt =C2=ABnat=C2=BB)) \n        (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB) X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n     =
    instance.declare-all (global (indt =C2=ABnat=C2=BB)) 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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (c=
onst =C2=ABHB_unnamed_factory_27=C2=BB)) X138",
-        "current_goal_predicate":
-          "synthesis.private.factory-instance->new-mixins",
+        "current_goal_text": "synthesis.private.factory-instance->new-mixi=
ns [] \n (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) 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 ty=
pe:\n \n                                                                   =
 A8 \n                                                                    \=
nwhich is not a record)) \n                                                =
                 true, \n                                                  =
              coq.term->gref\n                                             =
                    A3 A4, \n                                              =
                  factory-provides\n                                       =
                          A4 A5, \n                                        =
                        list-w-params_list\n                               =
                                  A5 A6, \n                                =
                                std.filter\n                               =
                                  A6 (c0 \\\n                              =
                                   (not\n                                  =
                                 (std.mem!\n                               =
                                     A0 c0))) \n                           =
                                      A2]).",
+                  "rule_text": "(synthesis.private.factory-instance->new-m=
ixins A0 A1 A2) :- (std.do!\n                                              =
                 [std.assert-ok!\n                                         =
                        (coq.typecheck\n                                   =
                                A1 A3) \n                                  =
                               mixin-src: X illtyped, \n                   =
                                             if\n                          =
                                       (not\n                              =
                                     (coq.safe-dest-app\n                  =
                                                  A3 \n                    =
                                                (global _) \n              =
                                                      _)) \n               =
                                                  (,\n                     =
                                              (coq.term->string\n          =
                                                          A1 A7) \n        =
                                                           (coq.term->strin=
g\n                                                                    A3 A=
8) \n                                                                   (co=
q.error\n                                                                  =
  Term:\n \n                                                               =
     A7 \n                                                                 =
   \nhas type:\n \n                                                        =
            A8 \n                                                          =
          \nwhich is not a record)) \n                                     =
                            true, \n                                       =
                         coq.term->gref\n                                  =
                               A3 A4, \n                                   =
                             factory-provides\n                            =
                                     A4 A5, \n                             =
                                   list-w-params_list\n                    =
                                             A5 A6, \n                     =
                                           std.filter\n                    =
                                             A6 (c0 \\\n                   =
                                              (not\n                       =
                                            (std.mem!\n                    =
                                                A0 c0))) \n                =
                                                 A2]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/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 (c=
onst =C2=ABHB_unnamed_factory_27=C2=BB)) X140) \n   mixin-src: X illtyped, =
\n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->strin=
g (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) X141) \n     (coq.term=
->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhi=
ch is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X=
143 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 =C2=ABHB_unnamed_factory_27=C2=BB)) X140) \n   mixin-src: X=
 illtyped, \n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.=
term->string (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=
=ABHB_unnamed_factory_27=C2=BB)) X140) \n   mixin-src: X illtyped, \n  if (=
not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (globa=
l (const =C2=ABHB_unnamed_factory_27=C2=BB)) X141) \n     (coq.term->string=
 X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is no=
t 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 =C2=ABHB_unnamed_factory_27=C2=BB)) X140) \n   mixin-src: X=
 illtyped, \n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.=
term->string (global (const =C2=ABHB_unnamed_factory_27=C2=BB)) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -82488,14 +79797,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok!\n (coq.typecheck (global (const =C2=ABHB=
_unnamed_factory_27=C2=BB)) X140) \n mixin-src: X illtyped",
+                "goal_text": "std.assert-ok!\n (coq.typecheck (global (con=
st =C2=ABHB_unnamed_factory_27=C2=BB)) 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 =C2=ABHB_unnamed_factory_27=C2=
=BB)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X=
141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X=
140 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 =C2=ABHB_unnamed_fac=
tory_27=C2=BB)) 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.te=
rm->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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed=
_factory_27=C2=BB)) X140) \n mixin-src: X illtyped",
+        "current_goal_text": "std.assert-ok!\n (coq.typecheck (global (con=
st =C2=ABHB_unnamed_factory_27=C2=BB)) 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 =3D ok=
 ; A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n=
 (A2 =3D ok ; A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -83072,14 +80363,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.typecheck (global (const =C2=ABHB_unnamed_factory_2=
7=C2=BB)) X140 X146",
+                "goal_text": "coq.typecheck (global (const =C2=ABHB_unname=
d_factory_27=C2=BB)) X140 X146",
                 "goal_id": 1484
               },
               { "goal_text": "!", "goal_id": 1485 },
               {
-                "goal_text":
-                  "X146 =3D ok ;\n X146 =3D error X147 , std.fatal-error-w=
-data mixin-src: X illtyped X147",
+                "goal_text": "X146 =3D ok ;\n X146 =3D error X147 , std.fa=
tal-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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_unnamed_factory_27=C2=BB)=
) X140 X146",
+        "current_goal_text": "coq.typecheck (global (const =C2=ABHB_unname=
d_factory_27=C2=BB)) X140 X146",
         "current_goal_predicate": "coq.typecheck",
         "failed_attempts": [],
         "successful_attempts": [
@@ -83656,8 +80929,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X140 =3D app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB=
), global (indt =C2=ABnat=C2=BB)]",
+                "goal_text": "X140 =3D app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]",
                 "goal_id": 1488
               },
               { "goal_text": "X146 =3D ok", "goal_id": 1489 }
@@ -83676,8 +80948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), globa=
l (indt =C2=ABnat=C2=BB)]",
+        "current_goal_text": "X140 =3D app [global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]",
         "current_goal_predicate": "=3D",
         "failed_attempts": [],
         "successful_attempts": [
@@ -84262,8 +81518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHB_u=
nnamed_factory_27=C2=BB)) X140) \n mixin-src: X illtyped",
+              "goal_text": "std.assert-ok!\n (coq.typecheck (global (const=
 =C2=ABHB_unnamed_factory_27=C2=BB)) X140) \n mixin-src: X illtyped",
               "goal_id": 1481
             },
             "cut_branch": {
-              "rule_text":
-                "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no di=
agnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-da=
ta A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -85426,8 +82650,7 @@
       "Inference",
       {
         "current_goal_id": 1486,
-        "current_goal_text":
-          "ok =3D ok ; ok =3D error X147 , std.fatal-error-w-data mixin-sr=
c: X illtyped X147",
+        "current_goal_text": "ok =3D ok ; ok =3D error X147 , std.fatal-er=
ror-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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;=
 A2 =3D error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (=
A2 =3D ok ; A2 =3D 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =3D ok ;\n X146 =3D error X147 , std.fatal-error-w-d=
ata mixin-src: X illtyped X147",
+              "goal_text": "X146 =3D ok ;\n X146 =3D error X147 , std.fata=
l-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 [g=
lobal (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) =
\n       (global _) _)) \n   (, (coq.term->string (global (const =C2=ABHB_u=
nnamed_factory_27=C2=BB)) X141) \n     (coq.term->string\n       (app [glob=
al (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X14=
2) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a recor=
d)) true, \n  coq.term->gref\n   (app [global (indt =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) X143, \n  factory-provides X143 X1=
44, 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =
=C2=ABnat=C2=BB)]) \n       (global _) _)) \n   (, (coq.term->string (globa=
l (const =C2=ABHB_unnamed_factory_27=C2=BB)) X141) \n     (coq.term->string=
\n       (app [global (indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=
=ABnat=C2=BB)]) X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nw=
hich is not a record)) true, \n  coq.term->gref\n   (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X143, \n  facto=
ry-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c=
0 \\ 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -86698,14 +83888,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (not\n   (coq.safe-dest-app\n     (app [global (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n     (g=
lobal _) _)) \n (, (coq.term->string (global (const =C2=ABHB_unnamed_factor=
y_27=C2=BB)) X141) \n   (coq.term->string\n     (app [global (indt =C2=ABIs=
SelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X142) \n   (coq.erro=
r 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]=
) \n     (global _) _)) \n (, (coq.term->string (global (const =C2=ABHB_unn=
amed_factory_27=C2=BB)) X141) \n   (coq.term->string\n     (app [global (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 =C2=AB=
IsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n     (global =
_) _)) \n (, (coq.term->string (global (const =C2=ABHB_unnamed_factory_27=
=C2=BB)) X141) \n   (coq.term->string\n     (app [global (indt =C2=ABIsSelf=
A'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X142) \n   (coq.error Te=
rm:\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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]=
) \n     (global _) _)) \n (, (coq.term->string (global (const =C2=ABHB_unn=
amed_factory_27=C2=BB)) X141) \n   (coq.term->string\n     (app [global (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (global _) _)",
+                "goal_text": "not\n (coq.safe-dest-app\n   (app [global (i=
ndt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (gl=
obal _) _)",
                 "goal_id": 1494
               },
               { "goal_text": "!", "goal_id": 1495 },
               {
-                "goal_text":
-                  ", (coq.term->string (global (const =C2=ABHB_unnamed_fac=
tory_27=C2=BB)) X141) \n (coq.term->string\n   (app [global (indt =C2=ABIsS=
elfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X142) \n (coq.error T=
erm:\n X141 \nhas type:\n X142 \nwhich is not a record)",
+                "goal_text": ", (coq.term->string (global (const =C2=ABHB_=
unnamed_factory_27=C2=BB)) X141) \n (coq.term->string\n   (app [global (ind=
t =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.=
axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (global _) _)",
+        "current_goal_text": "not\n (coq.safe-dest-app\n   (app [global (i=
ndt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (gl=
obal _) _)",
         "current_goal_predicate": "not",
         "failed_attempts": [],
         "successful_attempts": [
@@ -87923,8 +85079,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app\n (app [global (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global _) _",
+                "goal_text": "coq.safe-dest-app\n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=
=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global _) _",
+        "current_goal_text": "coq.safe-dest-app\n (app [global (indt =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=
=C2=BB)) (global _) X148",
+                "goal_text": "coq.safe-dest-app (global (indt =C2=ABIsSelf=
A'.axioms_=C2=BB)) (global _) X148",
                 "goal_id": 1501
               },
               {
@@ -88577,8 +85715,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (c=
oq.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axi=
oms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n (global _) _",
+              "goal_text": "coq.safe-dest-app\n (app [global (indt =C2=ABI=
sSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \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 =C2=ABIsSelfA'.axioms_=C2=BB)) =
(global _) X148",
+        "current_goal_text": "coq.safe-dest-app (global (indt =C2=ABIsSelf=
A'.axioms_=C2=BB)) (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 (c=
oq.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 (c=
oq.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsS=
elfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (global _) _)",
+              "goal_text": "not\n (coq.safe-dest-app\n   (app [global (ind=
t =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n   (glob=
al _) _)",
               "goal_id": 1494
             },
             "cut_branch": {
@@ -90662,13 +87752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=
=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) \n     (global =
_) _)) \n (, (coq.term->string (global (const =C2=ABHB_unnamed_factory_27=
=C2=BB)) X141) \n   (coq.term->string\n     (app [global (indt =C2=ABIsSelf=
A'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X142) \n   (coq.error Te=
rm:\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 =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]=
) \n     (global _) _)) \n (, (coq.term->string (global (const =C2=ABHB_unn=
amed_factory_27=C2=BB)) X141) \n   (coq.term->string\n     (app [global (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'=
.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X143, \n  factory-provides=
 X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (s=
td.mem! [] c0)) X138]",
+        "current_goal_text": "std.do!\n [coq.term->gref\n   (app [global (=
indt =C2=ABIsSelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -92440,14 +89485,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.term->gref\n (app [global (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X143",
+                "goal_text": "coq.term->gref\n (app [global (indt =C2=ABIs=
SelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X143",
                 "goal_id": 1504
               },
               { "goal_text": "!", "goal_id": 1505 },
               {
-                "goal_text":
-                  "std.do!\n [factory-provides X143 X144, list-w-params_li=
st 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)) X=
138]",
                 "goal_id": 1506
               }
             ],
@@ -92517,13 +89560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB), global (indt =C2=ABnat=C2=BB)]) X143",
+        "current_goal_text": "coq.term->gref\n (app [global (indt =C2=ABIs=
SelfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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 =C2=ABIsSelfA'.axioms_=C2=
=BB)) X143",
+                "goal_text": "coq.term->gref (global (indt =C2=ABIsSelfA'.=
axioms_=C2=BB)) X143",
                 "goal_id": 1508
               }
             ],
@@ -93074,8 +90100,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->g=
ref 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms=
_=C2=BB), global (indt =C2=ABnat=C2=BB)]) X143",
+              "goal_text": "coq.term->gref\n (app [global (indt =C2=ABIsSe=
lfA'.axioms_=C2=BB), global (indt =C2=ABnat=C2=BB)]) 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-da=
ta\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 =C2=ABIsSelfA'.axioms_=C2=BB)) X14=
3",
+        "current_goal_text": "coq.term->gref (global (indt =C2=ABIsSelfA'.=
axioms_=C2=BB)) 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->g=
ref 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB=
)) X143",
+              "goal_text": "coq.term->gref (global (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB)) 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-da=
ta\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 =C2=ABIsSelfA'.axioms_=C2=BB)=
 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (st=
d.mem! [] c0)) X138]",
+        "current_goal_text": "std.do!\n [factory-provides (indt =C2=ABIsSe=
lfA'.axioms_=C2=BB) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -94416,14 +91405,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-provides (indt =C2=ABIsSelfA'.axioms_=C2=BB) X1=
44",
+                "goal_text": "factory-provides (indt =C2=ABIsSelfA'.axioms=
_=C2=BB) 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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X144",
+        "current_goal_text": "factory-provides (indt =C2=ABIsSelfA'.axioms=
_=C2=BB) 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 =C2=ABIsSelfA'.axi=
oms_=C2=BB) X150, gref-deps X150 X151, \n  w-params.map X151 (factory-provi=
des.base X150) X144]",
+                "goal_text": "std.do!\n [factory-alias->gref (indt =C2=ABI=
sSelfA'.axioms_=C2=BB) X150, gref-deps X150 X151, \n  w-params.map X151 (fa=
ctory-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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=
=BB) X150, gref-deps X150 X151, \n  w-params.map X151 (factory-provides.bas=
e X150) X144]",
+        "current_goal_text": "std.do!\n [factory-alias->gref (indt =C2=ABI=
sSelfA'.axioms_=C2=BB) X150, gref-deps X150 X151, \n  w-params.map X151 (fa=
ctory-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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -95714,14 +92665,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-alias->gref (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
 X150",
+                "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) X150",
                 "goal_id": 1514
               },
               { "goal_text": "!", "goal_id": 1515 },
               {
-                "goal_text":
-                  "std.do!\n [gref-deps X150 X151, w-params.map X151 (fact=
ory-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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X150",
+        "current_goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) 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-abbr=
ev 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 =C2=ABIsSelfA'.axioms_=C2=BB) _=
",
+                "goal_text": "phant-abbrev X150 (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) _",
                 "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/da=
tabase.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) _",
+        "current_goal_text": "phant-abbrev X150 (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) _",
         "current_goal_predicate": "phant-abbrev",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97090,8 +93999,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABHasA.Axioms_=C2=BB) (const =
=C2=ABHasA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasA.Build=C2=BB=
) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABHasA.Axioms_=C2=BB=
) (const =C2=ABHasA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasA.Bu=
ild=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97115,8 +94023,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB) (const =
=C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB=
) (const =C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97140,8 +94047,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABHasB.Axioms_=C2=BB) (const =
=C2=ABHasB.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasB.Build=C2=BB=
) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABHasB.Axioms_=C2=BB=
) (const =C2=ABHasB.phant_Build=C2=BB) \n  =C2=ABinterleave_context.HasB.Bu=
ild=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97165,8 +94071,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.axi=
oms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.=
IsSelfA.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97190,8 +94095,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABIsSelfA.Axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.Buil=
d=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABIsSelfA.Axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_Build=C2=BB) \n  =C2=ABinterleave_context.I=
sSelfA.Build=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97215,8 +94119,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.=
axioms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_cont=
ext.IsSelfA'.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97240,8 +94143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc =C2=ABIsSelfA'.Axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_Build=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.B=
uild=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indc =C2=ABIsSelfA'.Axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_Build=C2=BB) \n  =C2=ABinterleave_conte=
xt.IsSelfA'.Build=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97269,8 +94171,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "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/da=
tabase.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X150",
+        "current_goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) 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-abbr=
ev 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/da=
tabase.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABHasB.axioms_=C2=BB) (const =
=C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasB.axioms_=C2=BB=
) (const =C2=ABHasB.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasB.a=
xioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98663,8 +95524,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=BB) (const=
 =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA.axi=
oms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA.axioms_=C2=
=BB) (const =C2=ABIsSelfA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.=
IsSelfA.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98687,8 +95547,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=C2=BB) (cons=
t =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.IsSelfA'.=
axioms=C2=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (const =C2=ABIsSelfA'.phant_axioms=C2=BB) \n  =C2=ABinterleave_cont=
ext.IsSelfA'.axioms=C2=BB) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98709,8 +95568,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                  "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=
=BB) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.Has=
A.axioms=C2=BB) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -98739,8 +95597,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB) (const =
=C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.axioms=C2=
=BB) :- .",
+                "rule_text": "(phant-abbrev (indt =C2=ABHasA.axioms_=C2=BB=
) (const =C2=ABHasA.phant_axioms=C2=BB) \n  =C2=ABinterleave_context.HasA.a=
xioms=C2=BB) :- .",
                 "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/da=
tabase.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X=
150",
+              "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X150",
               "goal_id": 1514
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt =C2=ABA.axioms_=C2=BB) (indt =
=C2=ABA.axioms_=C2=BB)) :- .",
+              "rule_text": "(factory-alias->gref (indt =C2=ABA.axioms_=C2=
=BB) (indt =C2=ABA.axioms_=C2=BB)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -99431,13 +96268,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt =C2=ABIsSelfA'.axioms_=C2=BB) X=
150",
+              "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X150",
               "goal_id": 1514
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt =C2=ABB.axioms_=C2=BB) (indt =
=C2=ABB.axioms_=C2=BB)) :- .",
+              "rule_text": "(factory-alias->gref (indt =C2=ABB.axioms_=C2=
=BB) (indt =C2=ABB.axioms_=C2=BB)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -99451,13 +96286,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt =C2=ABIsSelfA'.axioms_=C2=BB) X=
150",
+              "goal_text": "factory-alias->gref (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) X150",
               "goal_id": 1514
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt =C2=ABSelfA.axioms_=C2=BB) (in=
dt =C2=ABSelfA.axioms_=C2=BB)) :- .",
+              "rule_text": "(factory-alias->gref (indt =C2=ABSelfA.axioms_=
=C2=BB) (indt =C2=ABSelfA.axioms_=C2=BB)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -99487,8 +96320,7 @@
       "Inference",
       {
         "current_goal_id": 1516,
-        "current_goal_text":
-          "std.do!\n [gref-deps (indt =C2=ABIsSelfA'.axioms_=C2=BB) X151, =
\n  w-params.map X151 (factory-provides.base (indt =C2=ABIsSelfA'.axioms_=
=C2=BB)) X144]",
+        "current_goal_text": "std.do!\n [gref-deps (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) X151, \n  w-params.map X151 (factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB)) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -99528,8 +96359,7 @@
               },
               { "goal_text": "!", "goal_id": 1522 },
               {
-                "goal_text":
-                  "std.do!\n [w-params.map X151 (factory-provides.base (in=
dt =C2=ABIsSelfA'.axioms_=C2=BB)) X144]",
+                "goal_text": "std.do!\n [w-params.map X151 (factory-provid=
es.base (indt =C2=ABIsSelfA'.axioms_=C2=BB)) 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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) \n  (w=
-params.nil TheType (sort (typ =C2=ABinterleave_context.382=C2=BB)) (c0 \\ =
[]))) :- .",
+                  "rule_text": "(gref-deps (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) \n  (w-params.nil TheType (sort (typ =C2=ABinterleave_context.382=C2=
=BB)) (c0 \\ []))) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -100228,8 +97041,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(gref-deps (indt =C2=ABIsSelfA'.axioms_=C2=BB) \n  (w-p=
arams.nil TheType (sort (typ =C2=ABinterleave_context.382=C2=BB)) (c0 \\ []=
))) :- .",
+                "rule_text": "(gref-deps (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) \n  (w-params.nil TheType (sort (typ =C2=ABinterleave_context.382=C2=
=BB)) (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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =
=C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n   (factory-provides.base =
(indt =C2=ABIsSelfA'.axioms_=C2=BB)) X144]",
+        "current_goal_text": "std.do!\n [w-params.map\n   (w-params.nil Th=
eType (sort (typ =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n   (facto=
ry-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB)) 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -100934,8 +97728,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "w-params.map\n (w-params.nil TheType (sort (typ =C2=ABi=
nterleave_context.382=C2=BB)) c0 \\ []) \n (factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB)) X144",
+                "goal_text": "w-params.map\n (w-params.nil TheType (sort (=
typ =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n (factory-provides.bas=
e (indt =C2=ABIsSelfA'.axioms_=C2=BB)) 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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleav=
e_context.382=C2=BB)) c0 \\ []) \n (factory-provides.base (indt =C2=ABIsSel=
fA'.axioms_=C2=BB)) X144",
+        "current_goal_text": "w-params.map\n (w-params.nil TheType (sort (=
typ =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n (factory-provides.bas=
e (indt =C2=ABIsSelfA'.axioms_=C2=BB)) 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-par=
ams.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-nam=
e A1 A2).",
                   "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 =C2=AB=
interleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-name mk-w-para=
ms.nil-name \n (factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB)) =
X144",
+                "goal_text": "w-params.then\n (w-params.nil TheType (sort =
(typ =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-nam=
e mk-w-params.nil-name \n (factory-provides.base (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB)) X144",
                 "goal_id": 1527
               }
             ],
@@ -101668,13 +98441,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterlea=
ve_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-name mk-w-params.nil-n=
ame \n (factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB)) X144",
+        "current_goal_text": "w-params.then\n (w-params.nil TheType (sort =
(typ =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-nam=
e mk-w-params.nil-name \n (factory-provides.base (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB)) 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 A=
1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n=
                                    (sigma (c5 \\\n                        =
              (pi (c6 \\\n                                        (decl c6 =
c1 c2 =3D>\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-param=
s.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 =
\\ (c4 \\\n                                    (sigma (c5 \\\n             =
                         (pi (c6 \\\n                                      =
  (decl c6 c1 c2 =3D>\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 =C2=AB=
interleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1=
 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =3D>\n   =
 factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) c0 c6 (c3 c6) (c=
5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) X144",
+                "goal_text": "w-params.fold\n (w-params.nil TheType (sort =
(typ =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-nam=
e (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c=
2 =3D>\n    factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterlea=
ve_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \=
\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =3D>\n    factory=
-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-nam=
e (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c=
2 =3D>\n    factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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.f=
old.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=
 =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-name (c=
0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =
=3D>\n    factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.c=
ons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl =
c6 c1 c2 =3D>\n    factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB=
) 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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABi=
nterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 =
\\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =3D>\n    =
factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) 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 =C2=ABinterleave_context.382=C2=BB)) c0 \\ []) \n mk-w-params.c=
ons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl =
c6 c1 c2 =3D>\n    factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB=
) 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 =C2=ABinterleave_=
context.382=C2=BB)) =3D>\n     factory-provides.base (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB) X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (ty=
p =C2=ABinterleave_context.382=C2=BB)) c0 X144]",
+                "goal_text": "std.do!\n [coq.id->name TheType X152, std.re=
v [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ =C2=AB=
interleave_context.382=C2=BB)) =3D>\n     factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X=
152 (sort (typ =C2=ABinterleave_context.382=C2=BB)) 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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  sigm=
a c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ =C2=ABinterleave_context.=
382=C2=BB)) =3D>\n     factory-provides.base (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ =C2=
=ABinterleave_context.382=C2=BB)) c0 X144]",
+        "current_goal_text": "std.do!\n [coq.id->name TheType X152, std.re=
v [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ =C2=AB=
interleave_context.382=C2=BB)) =3D>\n     factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X=
152 (sort (typ =C2=ABinterleave_context.382=C2=BB)) 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! A=
1).",
                   "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 =C2=ABinterleave_context.382=C2=BB)) =3D>\n =
    factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) X153 c1 [] (c=
0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ =C2=ABinterleave_context.=
382=C2=BB)) c0 X144]",
+                "goal_text": "std.do!\n [std.rev [] X153, \n  sigma c0 \\\=
n   pi c1 \\\n    decl c1 X152 (sort (typ =C2=ABinterleave_context.382=C2=
=BB)) =3D>\n     factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) =
X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ =C2=ABinterl=
eave_context.382=C2=BB)) 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 :=3D TheType" ],
-                [ "Assign", "A1 :=3D X152" ]
+                [ "Assign", "A0 :=3D TheType" ], [ "Assign", "A1 :=3D 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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    d=
ecl c1 `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n    =
 factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) X153 c1 [] (c0 c=
1) ,\n    mk-w-params.nil-name `TheType` (sort (typ =C2=ABinterleave_contex=
t.382=C2=BB)) \n     c0 X144]",
+        "current_goal_text": "std.do!\n [std.rev [] X153, \n  sigma c0 \\\=
n   pi c1 \\\n    decl c1 `TheType` (sort (typ =C2=ABinterleave_context.382=
=C2=BB)) =3D>\n     factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ =
=C2=ABinterleave_context.382=C2=BB)) \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! A=
1).",
                   "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 `TheTy=
pe` (sort (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n     factory-prov=
ides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) X153 c1 [] (c0 c1) ,\n    mk-=
w-params.nil-name `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB))=
 \n     c0 X144]",
+                "goal_text": "std.do!\n [sigma c0 \\\n   pi c1 \\\n    dec=
l c1 `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n     f=
actory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) X153 c1 [] (c0 c1)=
 ,\n    mk-w-params.nil-name `TheType` (sort (typ =C2=ABinterleave_context.=
382=C2=BB)) \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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 :=3D []" ],
-                [ "Assign", "A1 :=3D X153" ]
+                [ "Assign", "A0 :=3D []" ], [ "Assign", "A1 :=3D X153" ]
               ]
             },
             "siblings": [
@@ -108928,13 +105473,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 :=3D []" ],
-                [ "Assign", "X153 :=3D []" ]
+                [ "Assign", "A0 :=3D []" ], [ "Assign", "X153 :=3D []" ]
               ]
             },
             "siblings": [],
@@ -109790,13 +106310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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` (sor=
t (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n     factory-provides.bas=
e (indt =C2=ABIsSelfA'.axioms_=C2=BB) [] c1 [] (c0 c1) ,\n    mk-w-params.n=
il-name `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) \n     c0=
 X144]",
+        "current_goal_text": "std.do!\n [sigma c0 \\\n   pi c1 \\\n    dec=
l c1 `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n     f=
actory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) [] c1 [] (c0 c1) ,=
\n    mk-w-params.nil-name `TheType` (sort (typ =C2=ABinterleave_context.38=
2=C2=BB)) \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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -110579,8 +107073,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` (sort (typ =
=C2=ABinterleave_context.382=C2=BB)) =3D>\n   factory-provides.base (indt =
=C2=ABIsSelfA'.axioms_=C2=BB) [] c1 [] (c0 c1) ,\n  mk-w-params.nil-name `T=
heType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) c0 \n   X144",
+                "goal_text": "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` =
(sort (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n   factory-provides.b=
ase (indt =C2=ABIsSelfA'.axioms_=C2=BB) [] c1 [] (c0 c1) ,\n  mk-w-params.n=
il-name `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) c0 \n   X=
144",
                 "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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABin=
terleave_context.382=C2=BB)) =3D>\n   factory-provides.base (indt =C2=ABIsS=
elfA'.axioms_=C2=BB) [] c1 [] (c0 c1) ,\n  mk-w-params.nil-name `TheType` (=
sort (typ =C2=ABinterleave_context.382=C2=BB)) c0 \n   X144",
+        "current_goal_text": "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` =
(sort (typ =C2=ABinterleave_context.382=C2=BB)) =3D>\n   factory-provides.b=
ase (indt =C2=ABIsSelfA'.axioms_=C2=BB) [] c1 [] (c0 c1) ,\n  mk-w-params.n=
il-name `TheType` (sort (typ =C2=ABinterleave_context.382=C2=BB)) c0 \n   X=
144",
         "current_goal_predicate": "sigma",
         "failed_attempts": [],
         "successful_attempts": [
@@ -111414,8 +107882,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "pi c0 \\\n decl c0 `TheType` (sort (typ =C2=ABinterleav=
e_context.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `TheType` (sort (t=
yp =C2=ABinterleave_context.382=C2=BB)) X154 \n  X144",
+                "goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ =C2=
=ABinterleave_context.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `The=
Type` (sort (typ =C2=ABinterleave_context.382=C2=BB)) 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleave_contex=
t.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `TheType` (sort (typ =C2=
=ABinterleave_context.382=C2=BB)) X154 \n  X144",
+        "current_goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ =C2=
=ABinterleave_context.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `The=
Type` (sort (typ =C2=ABinterleave_context.382=C2=BB)) 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 =C2=ABinterleav=
e_context.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=ABIsSelfA'.ax=
ioms_=C2=BB) [] c0 [] (X154 c0)",
+                "goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ =C2=
=ABinterleave_context.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) [] c0 [] (X154 c0)",
                 "goal_id": 1545
               },
               {
-                "goal_text":
-                  "mk-w-params.nil-name `TheType` (sort (typ =C2=ABinterle=
ave_context.382=C2=BB)) X154 \n X144",
+                "goal_text": "mk-w-params.nil-name `TheType` (sort (typ =
=C2=ABinterleave_context.382=C2=BB)) 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleave_contex=
t.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) [] c0 [] (X154 c0)",
+        "current_goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ =C2=
=ABinterleave_context.382=C2=BB)) =3D>\n  factory-provides.base (indt =C2=
=ABIsSelfA'.axioms_=C2=BB) [] c0 [] (X154 c0)",
         "current_goal_predicate": "pi",
         "failed_attempts": [],
         "successful_attempts": [
@@ -113100,8 +109515,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "decl c0 `TheType` (sort (typ =C2=ABinterleave_context.3=
82=C2=BB)) =3D>\n factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB)=
 [] c0 [] (X154 c0)",
+                "goal_text": "decl c0 `TheType` (sort (typ =C2=ABinterleav=
e_context.382=C2=BB)) =3D>\n factory-provides.base (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) [] 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABinterleave_context.382=C2=BB=
)) =3D>\n factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=BB) [] c0 [=
] (X154 c0)",
+        "current_goal_text": "decl c0 `TheType` (sort (typ =C2=ABinterleav=
e_context.382=C2=BB)) =3D>\n factory-provides.base (indt =C2=ABIsSelfA'.axi=
oms_=C2=BB) [] c0 [] (X154 c0)",
         "current_goal_predicate": "=3D>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -113948,8 +110337,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-provides.base (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) [] c0 [] (X154 c0)",
+                "goal_text": "factory-provides.base (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB) [] 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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) [] c0=
 [] (X154 c0)",
+        "current_goal_text": "factory-provides.base (indt =C2=ABIsSelfA'.a=
xioms_=C2=BB) [] 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 A=
4 A5) A6, \n                                            std.map A6 from_mix=
in A7, \n                                            std.map A6 from_builde=
r 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 =C2=ABIsSelfA'.axiom=
s_=C2=BB) 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-provide=
s.one [] c0) (X154 c0)]",
+                "goal_text": "std.do!\n [std.findall (from (indt =C2=ABIsS=
elfA'.axioms_=C2=BB) X155^1 X156^1) X157^1, \n  std.map X157^1 from_mixin X=
158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (fact=
ory-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) :- (st=
d.do!\n                                           [std.findall (from A0 A4 =
A5) A6, \n                                            std.map 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/da=
tabase.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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB=
) 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 =C2=ABIsS=
elfA'.axioms_=C2=BB) X155^1 X156^1) X157^1, \n  std.map X157^1 from_mixin X=
158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (fact=
ory-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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -115720,14 +112052,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.findall (from (indt =C2=ABIsSelfA'.axioms_=C2=BB) X=
155^1 X156^1) X157^1",
+                "goal_text": "std.findall (from (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) 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 X1=
57^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-pr=
ovides.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) :- (st=
d.do!\n                                           [std.findall (from A0 A4 =
A5) A6, \n                                            std.map 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/da=
tabase.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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X155^1 X1=
56^1) X157^1",
+        "current_goal_text": "std.findall (from (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) 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 =C2=ABIsSelfA'.axioms_=C2=
=BB) X155^1 X156^1) X157^1",
+                "goal_text": "findall_solutions (from (indt =C2=ABIsSelfA'=
.axioms_=C2=BB) 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) :- (st=
d.do!\n                                           [std.findall (from A0 A4 =
A5) A6, \n                                            std.map 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/da=
tabase.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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) X15=
5^1 X156^1) X157^1",
+        "findall_goal_text": "findall_solutions (from (indt =C2=ABIsSelfA'=
.axioms_=C2=BB) 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 =C2=ABIsSelfA'.axioms_=C2=BB) X0^1 X1^1",
+                "current_goal_text": "from (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) X0^1 X1^1",
                 "current_goal_predicate": "from",
                 "failed_attempts": [
                   {
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABA.axioms_=C2=BB) (indt =C2=AB=
HasA.axioms_=C2=BB) \n  (const =C2=ABA.interleave_context_HasA_mixin=C2=BB)=
) :- .",
+                        "rule_text": "(from (indt =C2=ABA.axioms_=C2=BB) (=
indt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABA.interleave_context_HasA_m=
ixin=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117595,8 +113866,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABHasB.axioms_=C2=BB) (indt =C2=
=ABHasB.axioms_=C2=BB) \n  (const =C2=ABHasB.identity_builder=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABHasB.axioms_=C2=BB=
) (indt =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABHasB.identity_builder=C2=
=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117619,8 +113889,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABB.axioms_=C2=BB) (indt =C2=AB=
HasB.axioms_=C2=BB) \n  (const =C2=ABB.interleave_context_HasB_mixin=C2=BB)=
) :- .",
+                        "rule_text": "(from (indt =C2=ABB.axioms_=C2=BB) (=
indt =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABB.interleave_context_HasB_m=
ixin=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117643,8 +113912,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABIsSelfA.axioms_=C2=BB) (indt =
=C2=ABIsSelfA.axioms_=C2=BB) \n  (const =C2=ABIsSelfA.identity_builder=C2=
=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABIsSelfA.axioms_=C2=
=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n  (const =C2=ABIsSelfA.identity_b=
uilder=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117667,8 +113935,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABSelfA.axioms_=C2=BB) (indt =
=C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABSelfA.interleave_context_HasA_mi=
xin=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABSelfA.axioms_=C2=
=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABSelfA.interleave_cont=
ext_HasA_mixin=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117691,8 +113958,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABSelfA.axioms_=C2=BB) (indt =
=C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABSelfA.interleave_context_HasB_mi=
xin=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABSelfA.axioms_=C2=
=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABSelfA.interleave_cont=
ext_HasB_mixin=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117715,8 +113981,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABSelfA.axioms_=C2=BB) (indt =
=C2=ABIsSelfA.axioms_=C2=BB) \n  (const =C2=ABSelfA.interleave_context_IsSe=
lfA_mixin=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABSelfA.axioms_=C2=
=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n  (const =C2=ABSelfA.interleave_c=
ontext_IsSelfA_mixin=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117739,8 +114004,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt=
 =C2=ABIsSelfA.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unnamed_facto=
ry_24=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_=
unnamed_factory_24=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117767,8 +114031,7 @@
                       "rule": [
                         "UserRule",
                         {
-                          "rule_text":
-                            "(from (indt =C2=ABHasA.axioms_=C2=BB) (indt =
=C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABHasA.identity_builder=C2=BB)) :-=
 .",
+                          "rule_text": "(from (indt =C2=ABHasA.axioms_=C2=
=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABHasA.identity_builder=
=C2=BB)) :- .",
                           "rule_loc": [
                             "File",
                             {
@@ -117797,8 +114060,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABHasA.axioms_=C2=BB) (indt =C2=
=ABHasA.axioms_=C2=BB) \n  (const =C2=ABHasA.identity_builder=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABHasA.axioms_=C2=BB=
) (indt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABHasA.identity_builder=C2=
=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117825,8 +114087,7 @@
               "Inference",
               {
                 "current_goal_id": 1555,
-                "current_goal_text":
-                  "from (indt =C2=ABIsSelfA'.axioms_=C2=BB) X0^1 X1^1",
+                "current_goal_text": "from (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) X0^1 X1^1",
                 "current_goal_predicate": "from",
                 "failed_attempts": [],
                 "successful_attempts": [
@@ -117835,8 +114096,7 @@
                       "rule": [
                         "UserRule",
                         {
-                          "rule_text":
-                            "(from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (in=
dt =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unnamed_factor=
y_22=C2=BB)) :- .",
+                          "rule_text": "(from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unn=
amed_factory_22=C2=BB)) :- .",
                           "rule_loc": [
                             "File",
                             {
@@ -117866,8 +114126,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt=
 =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unnamed_factory_=
22=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unn=
amed_factory_22=C2=BB)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117894,8 +114153,7 @@
               "Inference",
               {
                 "current_goal_id": 1555,
-                "current_goal_text":
-                  "from (indt =C2=ABIsSelfA'.axioms_=C2=BB) X0^1 X1^1",
+                "current_goal_text": "from (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) X0^1 X1^1",
                 "current_goal_predicate": "from",
                 "failed_attempts": [],
                 "successful_attempts": [
@@ -117904,8 +114162,7 @@
                       "rule": [
                         "UserRule",
                         {
-                          "rule_text":
-                            "(from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (in=
dt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unnamed_factor=
y_20=C2=BB)) :- .",
+                          "rule_text": "(from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unn=
amed_factory_20=C2=BB)) :- .",
                           "rule_loc": [
                             "File",
                             {
@@ -117935,8 +114192,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt=
 =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unnamed_factory_=
20=C2=BB)) :- .",
+                        "rule_text": "(from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n  (const =C2=ABBuilders_18.HB_unn=
amed_factory_20=C2=BB)) :- .",
                         "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) :- (st=
d.do!\n                                           [std.findall (from A0 A4 =
A5) A6, \n                                            std.map 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/da=
tabase.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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB=
) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unn=
amed_factory_24=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (ind=
t =C2=ABHasB.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unnamed_fact=
ory_22=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABH=
asA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unnamed_factory_20=C2=
=BB)] from_mixin X158^1, \n  std.map\n   [from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.=
HB_unnamed_factory_24=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=C2=BB=
) (indt =C2=ABHasB.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unname=
d_factory_22=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =
=C2=ABHasA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unnamed_factor=
y_20=C2=BB)] from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provi=
des.one [] c0) (X154 c0)]",
+        "current_goal_text": "std.do!\n [std.map\n   [from (indt =C2=ABIsS=
elfA'.axioms_=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n     (const =C2=
=ABBuilders_18.HB_unnamed_factory_24=C2=BB), \n    from (indt =C2=ABIsSelfA=
'.axioms_=C2=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n     (const =C2=ABBuilde=
rs_18.HB_unnamed_factory_22=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_=
unnamed_factory_20=C2=BB)] from_mixin X158^1, \n  std.map\n   [from (indt =
=C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n     (co=
nst =C2=ABBuilders_18.HB_unnamed_factory_24=C2=BB), \n    from (indt =C2=AB=
IsSelfA'.axioms_=C2=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n     (const =C2=
=ABBuilders_18.HB_unnamed_factory_22=C2=BB), \n    from (indt =C2=ABIsSelfA=
'.axioms_=C2=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n     (const =C2=ABBuilde=
rs_18.HB_unnamed_factory_20=C2=BB)] 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! A=
1).",
                   "rule_loc": [
                     "File",
                     {
@@ -118899,14 +115126,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.map\n [from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (in=
dt =C2=ABIsSelfA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_fa=
ctory_24=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABH=
asB.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_22=C2=
=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABHasA.axioms_=
=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_20=C2=BB)] from_mi=
xin X158^1",
+                "goal_text": "std.map\n [from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB=
_unnamed_factory_24=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (i=
ndt =C2=ABHasB.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_fact=
ory_22=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABHas=
A.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_20=C2=BB)=
] from_mixin X158^1",
                 "goal_id": 1556
               },
               { "goal_text": "!", "goal_id": 1557 },
               {
-                "goal_text":
-                  "std.do!\n [std.map\n   [from (indt =C2=ABIsSelfA'.axiom=
s_=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n     (const =C2=ABBuilders_1=
8.HB_unnamed_factory_24=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=C2=
=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unn=
amed_factory_22=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (ind=
t =C2=ABHasA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_unnamed_fact=
ory_20=C2=BB)] from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-pro=
vides.one [] c0) (X154 c0)]",
+                "goal_text": "std.do!\n [std.map\n   [from (indt =C2=ABIsS=
elfA'.axioms_=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n     (const =C2=
=ABBuilders_18.HB_unnamed_factory_24=C2=BB), \n    from (indt =C2=ABIsSelfA=
'.axioms_=C2=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n     (const =C2=ABBuilde=
rs_18.HB_unnamed_factory_22=C2=BB), \n    from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasA.axioms_=C2=BB) \n     (const =C2=ABBuilders_18.HB_=
unnamed_factory_20=C2=BB)] 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) :- (st=
d.do!\n                                           [std.findall (from A0 A4 =
A5) A6, \n                                            std.map 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/da=
tabase.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 A=
5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A=
5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 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/ut=
ils.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.fol=
d.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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 =3D>\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 =3D>\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/ut=
ils.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-param=
s.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/ut=
ils.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/da=
tabase.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 A=
2) :- (std.do!\n                                                           =
    [std.assert-ok!\n                                                      =
           (coq.typecheck\n                                                =
                   A1 A3) \n                                               =
                  mixin-src: X illtyped, \n                                =
                                if\n                                       =
                          (not\n                                           =
                        (coq.safe-dest-app\n                               =
                                     A3 \n                                 =
                                   (global _) \n                           =
                                         _)) \n                            =
                                     (,\n                                  =
                                 (coq.term->string\n                       =
                                             A1 A7) \n                     =
                                              (coq.term->string\n          =
                                                          A3 A8) \n        =
                                                           (coq.error\n    =
                                                                Term:\n \n =
                                                                   A7 \n   =
                                                                 \nhas type=
:\n \n                                                                    A=
8 \n                                                                    \nw=
hich is not a record)) \n                                                  =
               true, \n                                                    =
            coq.term->gref\n                                               =
                  A3 A4, \n                                                =
                factory-provides\n                                         =
                        A4 A5, \n                                          =
                      list-w-params_list\n                                 =
                                A5 A6, \n                                  =
                              std.filter\n                                 =
                                A6 (c0 \\\n                                =
                                 (not\n                                    =
                               (std.mem!\n                                 =
                                   A0 c0))) \n                             =
                                    A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mix=
ins A0 A1 A2) :- (std.do!\n                                                =
               [std.assert-ok!\n                                           =
                      (coq.typecheck\n                                     =
                              A1 A3) \n                                    =
                             mixin-src: X illtyped, \n                     =
                                           if\n                            =
                                     (not\n                                =
                                   (coq.safe-dest-app\n                    =
                                                A3 \n                      =
                                              (global _) \n                =
                                                    _)) \n                 =
                                                (,\n                       =
                                            (coq.term->string\n            =
                                                        A1 A7) \n          =
                                                         (coq.term->string\=
n                                                                    A3 A8)=
 \n                                                                   (coq.=
error\n                                                                    =
Term:\n \n                                                                 =
   A7 \n                                                                   =
 \nhas type:\n \n                                                          =
          A8 \n                                                            =
        \nwhich is not a record)) \n                                       =
                          true, \n                                         =
                       coq.term->gref\n                                    =
                             A3 A4, \n                                     =
                           factory-provides\n                              =
                                   A4 A5, \n                               =
                                 list-w-params_list\n                      =
                                           A5 A6, \n                       =
                                         std.filter\n                      =
                                           A6 (c0 \\\n                     =
                                            (not\n                         =
                                          (std.mem!\n                      =
                                              A0 c0))) \n                  =
                                               A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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                                                           [syn=
thesis.private.factory-instance->new-mixins\n                              =
                               [] A1 A3, \n                                =
                            std.map A3 (c0 \\\n                            =
                                 (c1 \\\n                                  =
                           (c1 =3D\n                                       =
                        mixin-src A0 \n                                    =
                            c0 A1))) A4, \n                                =
                            A4 =3D> std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! =
A0 A1 A2) :- (std.do!\n                                                    =
       [synthesis.private.factory-instance->new-mixins\n                   =
                                          [] A1 A3, \n                     =
                                       std.map A3 (c0 \\\n                 =
                                            (c1 \\\n                       =
                                      (c1 =3D\n                            =
                                   mixin-src A0 \n                         =
                                       c0 A1))) A4, \n                     =
                                       A4 =3D> std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/sy=
nthesis.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-fact=
ory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.=
do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [=
(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.priv=
ate.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , =
instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instance=
s-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-fr=
om-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A=
1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       in=
stance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-f=
or A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 ex=
port tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\=
n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c1 =3D insta=
nce-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 =
A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n     =
                                                   A0 A1 A2 A4), \n (if (ge=
t-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0=
 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 =3D pr c2 c3 , c=
1 =3D instance-to-export A5 c2 c3))))))) \n      A3) (A3 =3D [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "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 =3D arity A7) \n                                            (if=
-verbose\n                                              (coq.say\n         =
                                       HB: skipping section opening)\n     =
                                         , A8 =3D A6) \n                   =
                         (,\n                                              =
(, (new_int A21) \n                                                (std.any=
->string A21 A22) \n                                                (A9 is =
hb_instance_ ^ A22)) \n                                              (log.c=
oq.env.begin-section A9) \n                                              (i=
nstance.private.postulate-arity\n                                          =
      A4 [] A6 A8 A7)), \n                                           std.as=
sert!\n                                            (coq.safe-dest-app A7 \n=
                                              (global A10) A11) \n         =
                                   The type of the instance is not a factor=
y, \n                                           factory-alias->gref A10 A12=
, \n                                           std.assert!\n               =
                             (factory-nparams A12 A13) \n                  =
                          Not a factory synthesized by HB, \n              =
                             instance.private.hack-section-discharging\n   =
                                         A8 A14, \n                        =
                   instance.private.optimize-body\n                        =
                    A14 A15, \n                                           i=
f (A0 =3D _) \n                                            (, (new_int A23)=
 \n                                              (std.any->string A23 A24) =
\n                                              (A16 is\n                  =
                              HB_unnamed_factory_ ^ A24)) \n               =
                             (A16 =3D A0), \n                              =
             log.coq.env.add-const-noimplicits-failondup\n                 =
                           A16 A15 A7 ff A17, \n                           =
                A18 =3D global (const A17), \n                             =
              std.drop A13 A11 [A19 | _], \n                               =
            instance.private.check-non-forgetful-inheritance\n             =
                               A19 A12, \n                                 =
          instance.private.declare-instance\n                              =
              A12 A19 A18 A20 A3, \n                                       =
    if (A4 =3D arity _) true \n                                            =
(if-verbose\n                                              (header A25 ,\n =
                                               coq.say A25 \n              =
                                   closing instance section) ,\n           =
                                   log.coq.env.end-section-name A9), \n    =
                                       acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std=
.do!\n                                          [std.assert-ok!\n          =
                                  (coq.elaborate-arity-skeleton A2 \n      =
                                        _ A4) Definition type illtyped, \n =
                                          coq.arity->term A4 A5, \n        =
                                   std.assert-ok!\n                        =
                    (coq.elaborate-skeleton A1 A5 A6) \n                   =
                         Definition illtyped, \n                           =
                if (A4 =3D arity A7) \n                                    =
        (if-verbose\n                                              (coq.say=
\n                                                HB: skipping section open=
ing)\n                                              , A8 =3D A6) \n        =
                                    (,\n                                   =
           (, (new_int A21) \n                                             =
   (std.any->string A21 A22) \n                                            =
    (A9 is hb_instance_ ^ A22)) \n                                         =
     (log.coq.env.begin-section A9) \n                                     =
         (instance.private.postulate-arity\n                               =
                 A4 [] A6 A8 A7)), \n                                      =
     std.assert!\n                                            (coq.safe-des=
t-app A7 \n                                              (global A10) A11) =
\n                                            The type of the instance is n=
ot a factory, \n                                           factory-alias->g=
ref A10 A12, \n                                           std.assert!\n    =
                                        (factory-nparams A12 A13) \n       =
                                     Not a factory synthesized by HB, \n   =
                                        instance.private.hack-section-disch=
arging\n                                            A8 A14, \n             =
                              instance.private.optimize-body\n             =
                               A14 A15, \n                                 =
          if (A0 =3D _) \n                                            (, (n=
ew_int A23) \n                                              (std.any->strin=
g A23 A24) \n                                              (A16 is\n       =
                                         HB_unnamed_factory_ ^ A24)) \n    =
                                        (A16 =3D A0), \n                   =
                        log.coq.env.add-const-noimplicits-failondup\n      =
                                      A16 A15 A7 ff A17, \n                =
                           A18 =3D global (const A17), \n                  =
                         std.drop A13 A11 [A19 | _], \n                    =
                       instance.private.check-non-forgetful-inheritance\n  =
                                          A19 A12, \n                      =
                     instance.private.declare-instance\n                   =
                         A12 A19 A18 A20 A3, \n                            =
               if (A4 =3D arity _) true \n                                 =
           (if-verbose\n                                              (head=
er A25 ,\n                                                coq.say A25 \n   =
                                              closing instance section) ,\n=
                                              log.coq.env.end-section-name =
A9), \n                                           acc-clauses current A20])=
.",
                 "rule_loc": [
                   "File",
                   {
-                    "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/lo=
g.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 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^ c0)) \n   =
                 (supported-attribute (att c7 attmap)) (!) \n              =
      (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (sup=
ported-attribute (att c8 string) :- !)) =3D>\n                      parse-a=
ttributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c=
6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [att verbose =
bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type s=
tring, att short.pack string, att infer attmap, \n     att key string, att =
arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercion=
s bool, att export bool, att skip string, \n     att local bool, att fail b=
ool, att doc string, \n     att primitive_class bool, att primitive bool, \=
n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 =
=3D> (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n =
(pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi=
 (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi=
 (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c=
2] c3 c4 :-\n                   , (if (c3 =3D ) (c7 =3D c0) (c7 is c3 ^ . ^=
 c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n   =
                 (parse-attributes.aux c2 c3 c5) \n                    (pi =
(c8 \\ (supported-attribute (att c8 string) :- !)) =3D>\n                  =
    parse-attributes.aux c1  c6) \n                    (std.append c5 [get-=
option c7 c6] c4))))))))))))))))) =3D>\n   coq.parse-attributes A1 \n    [a=
tt verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att s=
hort.type string, att short.pack string, att infer attmap, \n     att key s=
tring, att arg_sort bool, att log bool, att log.raw bool, \n     att compre=
ss_coercions bool, att export bool, att skip string, \n     att local bool,=
 att fail bool, att doc string, \n     att primitive_class bool, att primit=
ive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!)=
, \n (A2 =3D> (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/ut=
ils.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-at=
tributes (with-logging (instance.declare-const A0 A1 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 =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=
=ABIsSelfA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_=
24=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABHasB.ax=
ioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_22=C2=BB), \n=
  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABHasA.axioms_=C2=BB) =
\n   (const =C2=ABBuilders_18.HB_unnamed_factory_20=C2=BB)] from_mixin X158=
^1",
+        "current_goal_text": "std.map\n [from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB=
_unnamed_factory_24=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (i=
ndt =C2=ABHasB.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_fact=
ory_22=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABHas=
A.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_20=C2=BB)=
] 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 =C2=ABIsSelfA'.axioms_=C2=BB) =
(indt =C2=ABIsSelfA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed=
_factory_24=C2=BB)) X160^1",
+                "goal_text": "from_mixin\n (from (indt =C2=ABIsSelfA'.axio=
ms_=C2=BB) (indt =C2=ABIsSelfA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18=
.HB_unnamed_factory_24=C2=BB)) X160^1",
                 "goal_id": 1559
               },
               {
-                "goal_text":
-                  "std.map\n [from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (in=
dt =C2=ABHasB.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_facto=
ry_22=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt =C2=ABHasA=
.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory_20=C2=BB)]=
 from_mixin X161^1",
+                "goal_text": "std.map\n [from (indt =C2=ABIsSelfA'.axioms_=
=C2=BB) (indt =C2=ABHasB.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_un=
named_factory_22=C2=BB), \n  from (indt =C2=ABIsSelfA'.axioms_=C2=BB) (indt=
 =C2=ABHasA.axioms_=C2=BB) \n   (const =C2=ABBuilders_18.HB_unnamed_factory=
_20=C2=BB)] 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.ma=
p A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A=
3), (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) :- (st=
d.do!\n                                           [std.findall (from A0 A4 =
A5) A6, \n                                            std.map 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/da=
tabase.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB=
/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -120018,13 +116210,11 @@
             "rule": [
               "UserRule",
               {
-