Diff of the two buildlogs: -- --- b1/build.log 2024-05-15 01:06:24.317023602 +0000 +++ b2/build.log 2024-05-15 01:08:29.687691019 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue May 14 13:03:21 -12 2024 -I: pbuilder-time-stamp: 1715735001 +I: Current time: Tue Jun 17 21:29:27 +14 2025 +I: pbuilder-time-stamp: 1750145367 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -29,54 +29,86 @@ dpkg-source: info: applying 0001-Increase-timeout-in-test-that-takes-a-bit-longer-on-.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/23573/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/D01_modify_environment starting +debug: Running on ionos6-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jun 17 07:29 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=21 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='532dc77f9b3f404492ce249f9e2ae479' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='23573' - PS1='# ' - PS2='> ' + INVOCATION_ID=b50a2a14790e412884643b3d78a6ef1f + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=28194 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.bBqr8WHi/pbuilderrc_bIn3 --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.bBqr8WHi/b1 --logfile b1/build.log coq-elpi_1.19.3-2.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://46.16.76.132:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.bBqr8WHi/pbuilderrc_H1Xg --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.bBqr8WHi/b2 --logfile b2/build.log coq-elpi_1.19.3-2.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://213.165.73.152:3128 I: uname -a - Linux ionos2-i386 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 13 11:24 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/23573/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Jun 16 17:47 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -202,7 +234,7 @@ Get: 76 http://deb.debian.org/debian trixie/main i386 libppx-deriving-ocaml-dev i386 5.2.1-4+b3 [796 kB] Get: 77 http://deb.debian.org/debian trixie/main i386 libre-ocaml-dev i386 1.11.0-1+b1 [919 kB] Get: 78 http://deb.debian.org/debian trixie/main i386 libelpi-ocaml-dev i386 1.17.4-3+b1 [9077 kB] -Fetched 342 MB in 6s (53.1 MB/s) +Fetched 342 MB in 4s (78.0 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:i386. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19684 files and directories currently installed.) @@ -466,8 +498,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Wed May 15 01:04:07 UTC 2024. -Universal Time is now: Wed May 15 01:04:07 UTC 2024. +Local time is now: Tue Jun 17 07:30:01 UTC 2025. +Universal Time is now: Tue Jun 17 07:30:01 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -541,7 +573,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/coq-elpi-1.19.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../coq-elpi_1.19.3-2_source.changes +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/coq-elpi-1.19.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../coq-elpi_1.19.3-2_source.changes dpkg-buildpackage: info: source package coq-elpi dpkg-buildpackage: info: source version 1.19.3-2 dpkg-buildpackage: info: source distribution unstable @@ -821,7 +857,7 @@ app [global (indt «or»), global (indt «False»), global (indt «True»)] hit app [global (indt «or»), global (indt «False»), global (indt «True»)] -Finished transaction in 0.008 secs (0.008u,0.s) (successful) +Finished transaction in 0.006 secs (0.006u,0.s) (successful) ########################## building APPS ############################ make[3]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/derive' Using coq found in /usr/bin//, from COQBIN or PATH @@ -912,7 +948,7 @@ make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3' make[1]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3' dh_auto_test - make -j11 test + make -j21 test make[1]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3' Using coq found in /usr/bin, from COQBIN or PATH ########################## building plugin ########################## @@ -933,69 +969,77 @@ COQC tests/test_API_env.v COQC tests/test_API_module.v COQC tests/test_API_section.v -COQC tests/test_API_arguments.v COQC tests/test_API_TC_CS.v +COQC tests/test_API_arguments.v COQC tests/test_API_notations.v COQC tests/test_HOAS.v +COQC tests/test_arg_HOAS.v +COQC tests/test_quotation.v +COQC tests/test_vernacular1.v +COQC tests/test_tactic.v +COQC tests/test_elaborator.v +COQC tests/test_ltac.v +COQC tests/test_ltac3.v +COQC tests/test_cache_async.v +COQC tests/test_COQ_ELPI_ATTRIBUTES.v +COQC tests/perf_calls.v make[4]: Nothing to be done for 'real-all'. make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/eltac' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/NES' -Using coq found in /usr/bin//, from COQBIN or PATH ?r : Reflexive R : Reflexive R where ?r : [ |- Reflexive R] -make[4]: Nothing to be done for 'real-all'. -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/NES' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/NES' Using coq found in /usr/bin//, from COQBIN or PATH +test2 +test1 +str hello +test1 +too many arguments +COQC tests/test_ctx_cache.v +test1 +str hello my +str Dear +test1 +too many arguments +COQC tests/test_libobject_A.v +«elpi.tests.test_API_notations.abbr» Query assignments: - L = [gref (indt «Empty_set»), gref (const «Empty_set_rect»), - gref (const «Empty_set_ind»), gref (const «Empty_set_rec»), - gref (const «Empty_set_sind»), gref (indt «unit»), - gref (const «unit_rect»), gref (const «unit_ind»), - gref (const «unit_rec»), gref (const «unit_sind»), - gref (indt «bool»), gref (const «bool_rect»), - gref (const «bool_ind»), gref (const «bool_rec»), - gref (const «bool_sind»), gref (const «andb»), gref (const «orb»), - gref (const «implb»), gref (const «xorb»), gref (const «negb»), - gref (const «andb_prop»), gref (const «andb_true_intro»), - gref (indt «eq_true»), gref (const «eq_true_rect»), - gref (const «eq_true_ind»), gref (const «eq_true_rec»), - gref (const «eq_true_sind»), gref (const «is_true»), - gref (const «eq_true_ind_r»), gref (const «eq_true_rec_r»), - gref (const «eq_true_rect_r»), gref (indt «BoolSpec»), - gref (const «BoolSpec_ind»), gref (const «BoolSpec_sind»), - gref (indt «nat»), gref (const «nat_rect»), gref (const «nat_ind»), - gref (const «nat_rec»), gref (const «nat_sind»), - gref (indt «option»), gref (const «option_rect»), - gref (const «option_ind»), gref (const «option_rec»), - gref (const «option_sind»), gref (const «option_map»), - gref (indt «sum»), gref (const «sum_rect»), gref (const «sum_ind»), - gref (const «sum_rec»), gref (const «sum_sind»), gref (indt «prod»), - gref (const «prod_rect»), gref (const «prod_ind»), - gref (const «prod_rec»), gref (const «prod_sind»), - gref (const «fst»), gref (const «snd»), - gref (const «surjective_pairing»), - gref (const «injective_projections»), gref (const «pair_equal_spec»), - gref (const «curry»), gref (const «uncurry»), - gref (const «rew_pair»), gref (indt «list»), - gref (const «list_rect»), gref (const «list_ind»), - gref (const «list_rec»), gref (const «list_sind»), - gref (const «length»), gref (const «app»), gref (indt «comparison»), - gref (const «comparison_rect»), gref (const «comparison_ind»), - gref (const «comparison_rec»), gref (const «comparison_sind»), - gref (const «comparison_eq_stable»), gref (const «CompOpp»), - gref (const «CompOpp_involutive»), gref (const «CompOpp_inj»), - gref (const «CompOpp_iff»), gref (indt «CompareSpec»), - gref (const «CompareSpec_ind»), gref (const «CompareSpec_sind»), - gref (indt «CompareSpecT»), gref (const «CompareSpecT_rect»), - gref (const «CompareSpecT_ind»), gref (const «CompareSpecT_rec»), - gref (const «CompareSpecT_sind»), gref (const «CompareSpec2Type»), - gref (const «CompSpec»), gref (const «CompSpecT»), - gref (const «CompSpec2Type»), gref (const «ID»), gref (const «id»), - gref (const «IDProp»), gref (const «idProp»)] - MP = «Coq.Init.Datatypes» + A = «elpi.tests.test_API_notations.abbr» + _uvk_1_ = X0 + _uvk_2_ = c0 \ +X1 c0 + _uvk_3_ = c0 \ c1 \ +X2 c0 c1 +Syntactic constraints: + {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 + ?- evar (X2 c0 c1) (X3 c0 c1) (X2 c0 c1) /* suspended on X2 */ + {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 + ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API_notations.3»)) + (X3 c0 c1) /* suspended on X4, X3 */ + {c0} : decl c0 `x` X0 + ?- evar (X1 c0) (sort (typ «elpi.tests.test_API_notations.2»)) (X1 c0) /* suspended on X1 */ + evar (X0) (sort (typ «elpi.tests.test_API_notations.1»)) (X0) /* suspended on X0 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_notations.3 elpi.tests.test_API_notations.2 + elpi.tests.test_API_notations.1} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + α1 + α2 + α3 +WEAK CONSTRAINTS: + + +Notation abbr _elpi_ctx_entry_2_was_x_ _elpi_ctx_entry_1_ := + (_elpi_ctx_entry_2_was_x_ = _elpi_ctx_entry_2_was_x_) +Expands to: Notation elpi.tests.test_API_notations.abbr +4 = 4 + : Prop Query assignments: E = fun `n` (global (indt «nat»)) c0 \ fun `t` (app [global (const «T2»), c0]) c1 \ @@ -1040,16 +1084,6 @@ d is not universe polymorphic Expands to: Variable d -eq_refl : e2 = 3 - : e2 = 3 -make[4]: Nothing to be done for 'real-all'. -Query assignments: - I = const «imp» -X2.imp : forall (T : Type) (x : T), x = x -> Prop - -X2.imp is not universe polymorphic -Arguments X2.imp T%type_scope x _ -Expands to: Constant elpi.tests.test_API_arguments.X2.imp {c0} : decl c0 `x` (global (indt «nat»)) ?- evar (X0 c0) (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) @@ -1072,8 +1106,12 @@ ?- evar (X0 c0) (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) (X1 c0) /* suspended on X0, X1 */ +eq_refl : e2 = 3 + : e2 = 3 +z + : nat Query assignments: - BO = fix `add` 0 + B = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ fun `n` (global (indt «nat»)) c1 \ @@ -1083,85 +1121,82 @@ fun `p` (global (indt «nat»)) c3 \ app [global (indc «S»), app [c0, c3, c2]]] GR = «Nat.add» + RB = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]] + T = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») TY = prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/coercion' -Using coq found in /usr/bin//, from COQBIN or PATH -«elpi.tests.test_API_notations.abbr» -Query assignments: - A = «elpi.tests.test_API_notations.abbr» - _uvk_1_ = X0 - _uvk_2_ = c0 \ -X1 c0 - _uvk_3_ = c0 \ c1 \ -X2 c0 c1 Syntactic constraints: - {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 - ?- evar (X2 c0 c1) (X3 c0 c1) (X2 c0 c1) /* suspended on X2 */ - {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 - ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API_notations.3»)) - (X3 c0 c1) /* suspended on X4, X3 */ - {c0} : decl c0 `x` X0 - ?- evar (X1 c0) (sort (typ «elpi.tests.test_API_notations.2»)) (X1 c0) /* suspended on X1 */ - evar (X0) (sort (typ «elpi.tests.test_API_notations.1»)) (X0) /* suspended on X0 */ + {c0 c1 c2 c3} : + decl c3 `n` (global (indt «nat»)), decl c2 `m` (global (indt «nat»)), + decl c1 `n` (global (indt «nat»)), + decl c0 `add` + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) + ?- evar (X0 c0 c1 c2 c3) (sort (typ «elpi.tests.test_elaborator.17»)) + (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ Universe constraints: UNIVERSES: - {elpi.tests.test_API_notations.3 elpi.tests.test_API_notations.2 - elpi.tests.test_API_notations.1} |= + {elpi.tests.test_elaborator.23 elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.21 elpi.tests.test_elaborator.20 + elpi.tests.test_elaborator.19 elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.17 elpi.tests.test_elaborator.16 + elpi.tests.test_elaborator.15 elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.13 elpi.tests.test_elaborator.12 + elpi.tests.test_elaborator.11 elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.9 elpi.tests.test_elaborator.8 + elpi.tests.test_elaborator.7 elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.5 elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.3 elpi.tests.test_elaborator.2 + elpi.tests.test_elaborator.1} |= + Set <= elpi.tests.test_elaborator.1 + Set <= elpi.tests.test_elaborator.2 + Set <= elpi.tests.test_elaborator.3 + Set <= elpi.tests.test_elaborator.8 + Set <= elpi.tests.test_elaborator.12 + Set <= elpi.tests.test_elaborator.16 + Set <= elpi.tests.test_elaborator.20 + elpi.tests.test_elaborator.1 <= elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.2 <= elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.3 <= elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.4 <= elpi.tests.test_elaborator.5 + elpi.tests.test_elaborator.5 <= elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.6 <= elpi.tests.test_elaborator.7 + elpi.tests.test_elaborator.8 <= elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.9 <= elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.10 <= elpi.tests.test_elaborator.11 + elpi.tests.test_elaborator.12 <= elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.13 <= elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.14 <= elpi.tests.test_elaborator.15 + elpi.tests.test_elaborator.16 <= elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.17 <= elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.18 <= elpi.tests.test_elaborator.19 + elpi.tests.test_elaborator.20 <= elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.21 <= elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.22 <= elpi.tests.test_elaborator.23 ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: SORTS: - α1 - α2 - α3 + WEAK CONSTRAINTS: -Notation abbr _elpi_ctx_entry_2_was_x_ _elpi_ctx_entry_1_ := - (_elpi_ctx_entry_2_was_x_ = _elpi_ctx_entry_2_was_x_) -Expands to: Notation elpi.tests.test_API_notations.abbr -4 = 4 - : Prop Query assignments: GR = const «myi» myi : Reflexive R : Reflexive R -Query assignments: - E = app - [global (const «bar»), - app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]], - global (const «xxx»)] - TY = prop - _uvk_4_ = X0 - _uvk_5_ = X1 -elpi.tests.test_API_module.X.i -[elpi, tests, test_API_module, X, Y] -[elpi, tests, test_API_module, X, Y] -Query assignments: - L = [gref (indt «X.i»), gref (const «X.i_rect»), gref (const «X.i_ind»), - gref (const «X.i_rec»), gref (const «X.i_sind»), gref (const «X.d»), - submodule «elpi.tests.test_API_module.X.Y» - [gref (indt «X.Y.i»), gref (const «X.Y.i_rect»), - gref (const «X.Y.i_ind»), gref (const «X.Y.i_rec»), - gref (const «X.Y.i_sind»), gref (const «X.Y.d»)]] - MP = «elpi.tests.test_API_module.X» - Spilled_1 = [elpi, tests, test_API_module, X, Y] - Spilled_2 = [elpi, tests, test_API_module, X, Y] - Spilled_3 = elpi.tests.test_API_module.X.Y.i - Spilled_4 = elpi.tests.test_API_module.X.i - Spilled_5 = elpi.tests.test_API_module.X.i - XYi = «X.Y.i» - XYr = «X.Y.i_rect» - Xi = «X.i» -Query assignments: - X = «x» -fx : nat -> nat - : nat -> nat +COQC tests/test_glob.v +COQC tests/test_link_perf.v Query assignments: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -1173,404 +1208,72 @@ fun `p` (global (indt «nat»)) c3 \ app [global (indc «S»), app [c0, c3, c2]]] GR = «Nat.add» - GRNat = indt «nat» - GRSucc = indc «S» - Nat = global (indt «nat») - Succ = global (indc «S») TY = prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat») +Query assignments: + I = const «imp» +X2.imp : forall (T : Type) (x : T), x = x -> Prop + +X2.imp is not universe polymorphic +Arguments X2.imp T%type_scope x _ +Expands to: Constant elpi.tests.test_API_arguments.X2.imp +make[4]: Nothing to be done for 'real-all'. +Query assignments: + L = [gref (indt «Empty_set»), gref (const «Empty_set_rect»), + gref (const «Empty_set_ind»), gref (const «Empty_set_rec»), + gref (const «Empty_set_sind»), gref (indt «unit»), + gref (const «unit_rect»), gref (const «unit_ind»), + gref (const «unit_rec»), gref (const «unit_sind»), + gref (indt «bool»), gref (const «bool_rect»), + gref (const «bool_ind»), gref (const «bool_rec»), + gref (const «bool_sind»), gref (const «andb»), gref (const «orb»), + gref (const «implb»), gref (const «xorb»), gref (const «negb»), + gref (const «andb_prop»), gref (const «andb_true_intro»), + gref (indt «eq_true»), gref (const «eq_true_rect»), + gref (const «eq_true_ind»), gref (const «eq_true_rec»), + gref (const «eq_true_sind»), gref (const «is_true»), + gref (const «eq_true_ind_r»), gref (const «eq_true_rec_r»), + gref (const «eq_true_rect_r»), gref (indt «BoolSpec»), + gref (const «BoolSpec_ind»), gref (const «BoolSpec_sind»), + gref (indt «nat»), gref (const «nat_rect»), gref (const «nat_ind»), + gref (const «nat_rec»), gref (const «nat_sind»), + gref (indt «option»), gref (const «option_rect»), + gref (const «option_ind»), gref (const «option_rec»), + gref (const «option_sind»), gref (const «option_map»), + gref (indt «sum»), gref (const «sum_rect»), gref (const «sum_ind»), + gref (const «sum_rec»), gref (const «sum_sind»), gref (indt «prod»), + gref (const «prod_rect»), gref (const «prod_ind»), + gref (const «prod_rec»), gref (const «prod_sind»), + gref (const «fst»), gref (const «snd»), + gref (const «surjective_pairing»), + gref (const «injective_projections»), gref (const «pair_equal_spec»), + gref (const «curry»), gref (const «uncurry»), + gref (const «rew_pair»), gref (indt «list»), + gref (const «list_rect»), gref (const «list_ind»), + gref (const «list_rec»), gref (const «list_sind»), + gref (const «length»), gref (const «app»), gref (indt «comparison»), + gref (const «comparison_rect»), gref (const «comparison_ind»), + gref (const «comparison_rec»), gref (const «comparison_sind»), + gref (const «comparison_eq_stable»), gref (const «CompOpp»), + gref (const «CompOpp_involutive»), gref (const «CompOpp_inj»), + gref (const «CompOpp_iff»), gref (indt «CompareSpec»), + gref (const «CompareSpec_ind»), gref (const «CompareSpec_sind»), + gref (indt «CompareSpecT»), gref (const «CompareSpecT_rect»), + gref (const «CompareSpecT_ind»), gref (const «CompareSpecT_rec»), + gref (const «CompareSpecT_sind»), gref (const «CompareSpec2Type»), + gref (const «CompSpec»), gref (const «CompSpecT»), + gref (const «CompSpec2Type»), gref (const «ID»), gref (const «id»), + gref (const «IDProp»), gref (const «idProp»)] + MP = «Coq.Init.Datatypes» Coq version: 8.18.0 = 8 . 18 . 0 Query assignments: MA = 8 MI = 18 P = 0 V = 8.18.0 -make[4]: Nothing to be done for 'real-all'. -c2 -global (indt «nat») -z -nat -Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z - T = global (indt «nat») -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/coercion' -########################## testing APPS ############################ -make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/derive' +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/NES' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' Using coq found in /usr/bin//, from COQBIN or PATH -Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory - -Query assignments: - E = app - [global (const «op»), global (const «c»), - app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] - TY = app [global (const «field»), global (const «c»)] - _uvk_6_ = X0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_elaborate.19 elpi.tests.test_API_elaborate.18} |= - elpi.tests.test_API_elaborate.19 < elpi.tests.test_API_elaborate.18 - s.u0 <= elpi.tests.test_API_elaborate.19 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α11 := Type -WEAK CONSTRAINTS: - - -Query assignments: - I = «Y.i» - ID = j - J = «Y.j» - MP = «elpi.tests.test_API_module.Y» - P = [elpi, tests, test_API_module, Y] -opaque_3 : nat - -opaque_3 is not universe polymorphic -opaque_3 is opaque -Expands to: Constant elpi.tests.test_API_section.opaque_3 -Query assignments: - Spilled_1 = const «foo» -foo 3 - : nat -H -[nabla c1 \ - seal - (goal - [decl c1 `H` - (prod `b` - (prod `b` (global (indt «bool»)) c2 \ - app [global (indt «eq»), global (indt «bool»), c2, c2]) c2 \ - global (indt «True»))] (X0 c1) - (prod `b` (global (indt «bool»)) c2 \ - app [global (indt «eq»), global (indt «bool»), c2, c2]) (X1 c1) [])] -COQDEP VFILES -Query assignments: - _uvk_16_ = X0 - _uvk_17_ = c0 \ -X1 c0 - _uvk_18_ = c0 \ c1 \ -X2 c0 c1 -Syntactic constraints: - {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 - ?- evar (X2 c0 c1) (X3 c0 c1) (X2 c0 c1) /* suspended on X2 */ - {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 - ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API_notations.6»)) - (X3 c0 c1) /* suspended on X4, X3 */ - {c0} : decl c0 `x` X0 - ?- evar (X1 c0) (sort (typ «elpi.tests.test_API_notations.5»)) (X1 c0) /* suspended on X1 */ - evar (X0) (sort (typ «elpi.tests.test_API_notations.4»)) (X0) /* suspended on X0 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_notations.6 elpi.tests.test_API_notations.5 - elpi.tests.test_API_notations.4} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α4 - α5 - α6 -WEAK CONSTRAINTS: - - -Notation abbr2 _elpi_ctx_entry_1_was_x_ := - (fun H => _elpi_ctx_entry_1_was_x_ = _elpi_ctx_entry_1_was_x_) -Expands to: Notation elpi.tests.test_API_notations.abbr2 -(fun _ : nat => 2 = 2) 3 - : Prop -Query assignments: - L = [tc-instance (const «subrelation_partial_order») 0, - tc-instance (const «PER_Transitive») 3, - tc-instance (const «PreOrder_Transitive») 2, - tc-instance (const «iff_Transitive») 0, - tc-instance (const «eq_Transitive») 0, - tc-instance (const «Equivalence_Transitive») 0, - tc-instance (const «impl_Transitive») 0, - tc-instance (const «StrictOrder_Transitive») 0, - tc-instance (const «StrictOrder_Irreflexive») 0, - tc-instance (const «StrictOrder_Asymmetric») 0, - tc-instance (const «predicate_equivalence_equivalence») 0, - tc-instance (const «relation_equivalence_equivalence») 0, - tc-instance (const «eq_equivalence») 10, - tc-instance (const «iff_equivalence») 0, - tc-instance (const «Equivalence_Reflexive») 0, - tc-instance (const «iff_Reflexive») 0, - tc-instance (const «impl_Reflexive») 0, - tc-instance (const «PreOrder_Reflexive») 2, - tc-instance (const «eq_Reflexive») 0, tc-instance (const «myi») 10, - tc-instance (const «partial_order_antisym») 0, - tc-instance (const «eq_Symmetric») 0, - tc-instance (const «Equivalence_Symmetric») 0, - tc-instance (const «PER_Symmetric») 3, - tc-instance (const «iff_Symmetric») 0, - tc-instance (const «neq_Symmetric») 0, - tc-instance (const «Bool.Decidable_eq_bool») 0, - tc-instance (const «DecidableClass.Decidable_not») 0, - tc-instance (const «inverse_impl_rewrite_relation») 3, - tc-instance (const «impl_rewrite_relation») 3, - tc-instance (const «iff_rewrite_relation») 2, - tc-instance (const «relation_equivalence_rewrite_relation») 0, - tc-instance (const «relation_implication_preorder») 0, - tc-instance (const «Equivalence_PreOrder») 10, - tc-instance (const «predicate_implication_preorder») 0, - tc-instance (const «Equivalence_PER») 10] -Query assignments: - GR = «empty_nat» - TY = global (indt «nat») -c2 -global (indt «nat») -z -nat -Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z - T = global (indt «nat») -hello world -raw: -parameter A explicit (global (const «T1»)) c0 \ - inductive ind1 tt - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.22»))) c1 \ - [constructor K1 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), - constructor K2 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c2 \ - arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), - constructor K3 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c2 \ - arity (prod `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] -elab1: -parameter A explicit (global (const «T1»)) c0 \ - inductive ind1 tt - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.23»)) - c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.25»))) c1 \ - [constructor K1 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.28»)) - c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), - constructor K2 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.30»)) - c2 \ - arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), - constructor K3 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.33»)) - c2 \ - arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] -elab2: -parameter A explicit (global (const «T1»)) c0 \ - parameter B explicit (sort (typ «ind1.u0»)) c1 \ - inductive ind1 tt (arity (sort (typ «ind1.u1»))) c2 \ - [constructor K1 (arity (prod `_` c2 c3 \ c2)), - constructor K2 - (arity (prod `_` (app [global (const «f1»), c0]) c3 \ c2)), - constructor K3 - (arity (prod `_` (app [global (const «f1»), c0]) c3 \ c2))] -raw: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «f1.u0»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -elab1: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «elpi.tests.test_API_elaborate.38»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -elab2: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «ind2.u0»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -Query assignments: - GRy = EXN PRINTING: Not_found - I = EXN PRINTING: Not_found - L = [gref (const «A.z»), gref (const «A.i»)] - MP = «elpi.tests.test_API_module.A» - MP_TA = «elpi.tests.test_API_module.TA» - _uvk_1_ = «A.i.u0» - _uvk_2_ = «elpi.tests.test_API_module.11» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_module.11 A.i.u0} -UNDEFINED UNIVERSES: - elpi.tests.test_API_module.11 - A.i.u0 -SORTS: - -WEAK CONSTRAINTS: - - -Module -A - : TA -:= Struct - Definition x - Module B - Definition z - Inductive i1 - Definition i1_rect - Definition i1_ind - Definition i1_rec - Definition i1_sind - Definition i - End - -A.z - : nat -A.i - : Type -*** [ A.i : Type ] -raw: -record ind3 (sort (typ «elpi.tests.test_API_elaborate.41»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 - (sort (typ «elpi.tests.test_API_elaborate.40»)) c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -elab1: -record ind3 (sort (typ «elpi.tests.test_API_elaborate.42»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 - (sort (typ «elpi.tests.test_API_elaborate.43»)) c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -elab2: -record ind3 (sort (typ «ind3.u0»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 (sort (typ «ind3.u1»)) - c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -forall x : ind3, x -> Prop - : Type -Query assignments: - Spilled_1 = const «f» - Spilled_2 = const «f» - Spilled_3 = const «f» - Spilled_4 = const «f» - Spilled_5 = const «f» -f : forall [S : Type], S -> Prop - -f is not universe polymorphic -Arguments f [S]%type_scope _ - (where some original arguments have been renamed) -f is transparent -Expands to: Constant elpi.tests.test_API_arguments.f -f (S:=bool * bool) - : bool * bool -> Prop -[str fun, str in, str as, int 4, str end, str match, str return, str =>, - str :, str :=, str {, str }, str ;, str ,, str |, str x, int 1, str H, - trm - (fun `x` (global (indt «False»)) c0 \ - match c0 (fun `y` (global (indt «False»)) c1 \ global (indt «nat»)) - [])] -fun `H` X0 c0 \ - app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] -Query assignments: - Spilled_1 = «elpi.tests.test_API_notations.abbr2» - T = fun `H` X0 c0 \ - app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] - _uvk_31_ = X2 -Query assignments: - GR = indt «RewriteRelation» - L = [tc-instance (const «inverse_impl_rewrite_relation») 3, - tc-instance (const «impl_rewrite_relation») 3, - tc-instance (const «iff_rewrite_relation») 2, - tc-instance (const «relation_equivalence_rewrite_relation») 0] -COQC tests/test_derive_stdlib.v -Query assignments: - GR1 = indc «Vector.nil» - GR2 = indt «nat» - GR3 = const «A» -Illegal application (Non-functional construction): -The expression "Prop" of type "Type" -cannot be applied to the term - "Prop" : "Type" -Query assignments: - E = Illegal application (Non-functional construction): -The expression "Prop" of type "Type" -cannot be applied to the term - "Prop" : "Type" -Query assignments: - E = app - [global (const «op»), global (const «c»), - app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] -Query assignments: - MP_TA = «elpi.tests.test_API_module.TA» - MP_TF = «elpi.tests.test_API_module.TF» - TY = app [global (const «field»), global (const «c»)] - Spilled_1 = «elpi.tests.test_API_module.a» - Spilled_2 = const const EXN PRINTING: Not_found -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_elaborate.50 elpi.tests.test_API_elaborate.49} |= - elpi.tests.test_API_elaborate.50 < elpi.tests.test_API_elaborate.49 - s.u0 <= elpi.tests.test_API_elaborate.50 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α19 := Type -WEAK CONSTRAINTS: - - -Module -F - : Funsig (a:TA) Funsig (b:TA) TF -:= Functor (a:TA) Functor (b:TA) Struct Definition w : nat. End - -Module B : Sig Parameter w : nat. End := (F A A) - -*** [ B.w : nat ] -unknown_gref -Query assignments: - Spilled_1 = const «f» -f : forall [S : Type], S -> Prop - -f is not universe polymorphic -Arguments f [S]%type_scope / _ - (where some original arguments have been renamed) -The reduction tactics unfold f when applied to 1 argument -f is transparent -Expands to: Constant elpi.tests.test_API_arguments.f -f (S:=bool * bool) - : bool * bool -> Prop - = fun x : bool => x = x - : bool -> Prop -COQC tests/test_arg_HOAS.v -Query assignments: - Spilled_1 = «elpi.tests.test_API_notations.abbr2» -Query assignments: - GR = indt «RewriteRelation» -COQC tests/test_quotation.v -«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» -Query assignments: - T = sort (typ «elpi.tests.test_HOAS.3») - U = «elpi.tests.test_HOAS.3» -COQC tests/test_vernacular1.v -add_equal Query assignments: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -1582,104 +1285,9 @@ fun `p` (global (indt «nat»)) c3 \ app [global (indc «S»), app [c0, c3, c2]]] GR = «Nat.add» - NGR = «add_equal» - Name = add_equal - S = add - Spilled_1 = add_equal - Spilled_2 = add_equal TY = prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -add_equal : nat -> nat -> nat - -add_equal is not universe polymorphic -Arguments add_equal (n m)%nat_scope -add_equal is opaque -Expands to: Constant elpi.tests.test_API_env.add_equal -Unable to unify "bool" with "nat". -Query assignments: - Msg = Unable to unify "bool" with "nat". -Query assignments: - MP_TA = «elpi.tests.test_API_module.TA» -Module Type TB = Funsig (A:TA) Sig End -foo : nat - : nat -bar : bool -> nat - : bool -> nat -test2 -test1 -str hello -test1 -too many arguments -COQC tests/test_tactic.v -test1 -str hello my -str Dear -test1 -too many arguments -«myfalse» -Query assignments: - F = indt «False» - GR = «myfalse» -myfalse - : False -Query assignments: - GR = indt «True» -Query assignments: - U = «elpi.tests.test_HOAS.4» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.4} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - Cons = global (indc «cons») - GRCons = indc «cons» - GRList = indt «list» - GRNat = indt «nat» - GRNil = indc «nil» - GRZero = indc «O» - L = app - [global (indc «cons»), global (indt «nat»), global (indc «O»), - app [global (indc «nil»), global (indt «nat»)]] - LE = app - [global (indc «cons»), global (indt «nat»), global (indc «O»), - app [global (indc «nil»), global (indt «nat»)]] - List = global (indt «list») - Nat = global (indt «nat») - Nil = global (indc «nil») - Zero = global (indc «O») -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_typecheck.4 elpi.tests.test_API_typecheck.3 - elpi.tests.test_API_typecheck.2 elpi.tests.test_API_typecheck.1} |= - elpi.tests.test_API_typecheck.3 < elpi.tests.test_API_typecheck.2 - elpi.tests.test_API_typecheck.4 < elpi.tests.test_API_typecheck.1 - Set <= elpi.tests.test_API_typecheck.3 - Set <= elpi.tests.test_API_typecheck.4 - elpi.tests.test_API_typecheck.3 <= list.u0 - elpi.tests.test_API_typecheck.4 <= list.u0 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α1 := Type - α2 := Type -WEAK CONSTRAINTS: - - -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.A» -Module IA := Struct Definition z : nat. Definition i : Type. End - -COQC tests/test_param2.v +COQC tests/test_link_order1.v Query assignments: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -1691,225 +1299,12 @@ fun `p` (global (indt «nat»)) c3 \ app [global (indc «S»), app [c0, c3, c2]]] GR = «Nat.add» + GRNat = indt «nat» + GRSucc = indc «S» + Nat = global (indt «nat») + Succ = global (indc «S») TY = prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -Query assignments: - U = «foo» -parameter T X0 (sort (typ X1)) c0 \ - record eq_class (sort (typ X2)) mk_eq_class - (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ - field X3 eq_proof - (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ - end-record) -Query assignments: - DECL = parameter T X0 (sort (typ «eq_class.u0»)) c0 \ - record eq_class (sort (typ «eq_class.u1»)) mk_eq_class - (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ - field X3 eq_proof - (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ - end-record) - GR = «eq_class» - _uvk_1_ = «eq_class.u0» - _uvk_2_ = «eq_class.u1» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {eq_class.u1 eq_class.u0} -UNDEFINED UNIVERSES: - eq_class.u1 - eq_class.u0 -SORTS: - -WEAK CONSTRAINTS: - - -Record eq_class (T : Type@{eq_class.u0}) : Type@{eq_class.u1} := mk_eq_class - { eq_f : bool; eq_proof : eq_f = eq_f }. - -Arguments eq_class T%type_scope -Arguments mk_eq_class T%type_scope eq_f%bool_scope eq_proof -fun x : eq_class nat => x : bool - : eq_class nat -> bool -p <- eq_proof ( xxx ) -nth_R = -fun (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0) (x2 : T1 x0 x1) -=> -let - fix rec (n : nat) (l : list T) {struct n} : T := - match l with - | nil => x0 - | (x :: xs)%list => match n with - | 0 => x - | S m => rec m xs - end - end in -let - fix rec0 (n : nat) (l : list T0) {struct n} : T0 := - match l with - | nil => x1 - | (x :: xs)%list => match n with - | 0 => x - | S m => rec0 m xs - end - end in -fix rec1 (n n0 : nat) (n1 : nat_R n n0) {struct n1} : - forall (l : list T) (l0 : list T0), - list_R T T0 T1 l l0 -> T1 (rec n l) (rec0 n0 l0) := - match - n1 in (nat_R s1 s2) - return - (forall (l : list T) (l0 : list T0), - list_R T T0 T1 l l0 -> T1 (rec s1 l) (rec0 s2 l0)) - with - | O_R => - let K := O_R in - (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) - (l0 : list T0) (l1 : list_R T T0 T1 l l0) => - match - l1 in (list_R _ _ _ l2 l3) - return - (T1 - match l2 with - | nil => x0 - | (x :: xs)%list => - match n2 with - | 0 => x - | S m => rec m xs - end - end - match l3 with - | nil => x1 - | (x :: xs)%list => - match n3 with - | 0 => x - | S m => rec0 m xs - end - end) - with - | nil_R _ _ _ => x2 - | cons_R _ _ _ x x3 x4 xs xs0 xs1 => - match - n4 in (nat_R n5 n6) - return - (T1 match n5 with - | 0 => x - | S m => rec m xs - end match n6 with - | 0 => x3 - | S m => rec0 m xs0 - end) - with - | O_R => x4 - | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 - end - end) 0 0 K - | S_R x x3 x4 => - let K := S_R x x3 x4 in - (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) - (l0 : list T0) (l1 : list_R T T0 T1 l l0) => - match - l1 in (list_R _ _ _ l2 l3) - return - (T1 - match l2 with - | nil => x0 - | (x5 :: xs)%list => - match n2 with - | 0 => x5 - | S m => rec m xs - end - end - match l3 with - | nil => x1 - | (x5 :: xs)%list => - match n3 with - | 0 => x5 - | S m => rec0 m xs - end - end) - with - | nil_R _ _ _ => x2 - | cons_R _ _ _ x5 x6 x7 xs xs0 xs1 => - match - n4 in (nat_R n5 n6) - return - (T1 match n5 with - | 0 => x5 - | S m => rec m xs - end match n6 with - | 0 => x6 - | S m => rec0 m xs0 - end) - with - | O_R => x7 - | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 - end - end) (S x) (S x3) K - end - : forall (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0), - T1 x0 x1 -> - forall n n0 : nat, - nat_R n n0 -> - forall (l : list T) (l0 : list T0), - list_R T T0 T1 l l0 -> T1 (nth T x0 n l) (nth T0 x1 n0 l0) - -Arguments nth_R (T T)%type_scope T%function_scope - x0 x0 x0 (n n)%nat_scope n (l l)%list_scope l -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.IA» -i - : Type -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 48, column 5, character 947:), - attribute foo (leaf-str bar)] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 48, column 5, character 947:, - get-option foo bar] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 52, column 0, character 981:), - attribute foo (leaf-str bar), attribute poly (leaf-str )] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 52, column 0, character 981:, - get-option foo bar, get-option poly tt] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 53, column 0, character 1009:), - attribute foo (leaf-str bar), attribute poly (leaf-str ), - attribute suppa (node [attribute duppa (leaf-str )])] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 53, column 0, character 1009:, - get-option foo bar, get-option poly tt] -global (indt «nat») -Query assignments: - T = global (indt «nat») - _uvk_5_ = global (indt «nat») - _uvk_6_ = global (indt «nat») -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_typecheck.9 elpi.tests.test_API_typecheck.8 - elpi.tests.test_API_typecheck.7 elpi.tests.test_API_typecheck.6 - elpi.tests.test_API_typecheck.5} |= - Set < elpi.tests.test_API_typecheck.7 - elpi.tests.test_API_typecheck.8 < elpi.tests.test_API_typecheck.6 - elpi.tests.test_API_typecheck.9 < elpi.tests.test_API_typecheck.5 - Set <= elpi.tests.test_API_typecheck.8 - Set <= elpi.tests.test_API_typecheck.9 - elpi.tests.test_API_typecheck.8 <= list.u0 - elpi.tests.test_API_typecheck.9 <= list.u0 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α3 := Type - α4 := Type - α5 := Type -WEAK CONSTRAINTS: - - ----<<---- enter: coq.say raw: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -2217,6 +1612,41 @@ (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X0 +Query assignments: + _uvk_16_ = X0 + _uvk_17_ = c0 \ +X1 c0 + _uvk_18_ = c0 \ c1 \ +X2 c0 c1 +Syntactic constraints: + {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 + ?- evar (X2 c0 c1) (X3 c0 c1) (X2 c0 c1) /* suspended on X2 */ + {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 + ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API_notations.6»)) + (X3 c0 c1) /* suspended on X4, X3 */ + {c0} : decl c0 `x` X0 + ?- evar (X1 c0) (sort (typ «elpi.tests.test_API_notations.5»)) (X1 c0) /* suspended on X1 */ + evar (X0) (sort (typ «elpi.tests.test_API_notations.4»)) (X0) /* suspended on X0 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_notations.6 elpi.tests.test_API_notations.5 + elpi.tests.test_API_notations.4} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + α4 + α5 + α6 +WEAK CONSTRAINTS: + + +Notation abbr2 _elpi_ctx_entry_1_was_x_ := + (fun H => _elpi_ctx_entry_1_was_x_ = _elpi_ctx_entry_1_was_x_) +Expands to: Notation elpi.tests.test_API_notations.abbr2 +(fun _ : nat => 2 = 2) 3 + : Prop ---->>---- exit: coq.env.add-indt (parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ @@ -2263,6 +1693,16 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +Query assignments: + E = app + [global (const «bar»), + app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]], + global (const «xxx»)] + TY = prop + _uvk_4_ = X0 + _uvk_5_ = X1 ----<<---- enter: coq.say raw: (parameter A1 maximal X0 c0 \ @@ -2377,6 +1817,13 @@ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X9) Illtyped inductive declaration +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 48, column 5, character 947:), + attribute foo (leaf-str bar)] +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 48, column 5, character 947:, + get-option foo bar] ---->>---- exit: std.assert-ok! (coq.elaborate-indt-decl-skeleton @@ -2552,6 +1999,10 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 52, column 0, character 981:), + attribute foo (leaf-str bar), attribute poly (leaf-str )] ----<<---- enter: coq.env.add-indt (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ @@ -2588,53 +2039,17 @@ (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X10 -fix X0 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ X1 c2 c3) - [c2, fun `p` (X2 c1 c2) c3 \ app [c0, c3, c2]] -fix X0 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, fun `p` (X3 c1 c2) c3 \ app [c0, c3, c2]] -Query assignments: - BO1 = fix X0 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, fun `p` (X3 c1 c2) c3 \ app [c0, c3, c2]] - GR = «Nat.add» - TY = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») - _uvk_1_ = c0 \ c1 \ -global (indt «nat») - _uvk_2_ = c0 \ c1 \ -X3 c0 c1 -Syntactic constraints: - {c0 c1} : - decl c1 `m` (global (indt «nat»)), decl c0 `n` (global (indt «nat»)) - ?- evar (X3 c0 c1) (sort (typ «elpi.tests.test_quotation.2»)) (X3 c0 c1) /* suspended on X3 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_quotation.3 elpi.tests.test_quotation.2 - elpi.tests.test_quotation.1} |= Set <= elpi.tests.test_quotation.3 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - elpi.tests.test_quotation.3 -SORTS: - α1 - α2 -WEAK CONSTRAINTS: - - +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 52, column 0, character 981:, + get-option foo bar, get-option poly tt] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 53, column 0, character 1009:), + attribute foo (leaf-str bar), attribute poly (leaf-str ), + attribute suppa (node [attribute duppa (leaf-str )])] +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 53, column 0, character 1009:, + get-option foo bar, get-option poly tt] ---->>---- exit: coq.env.add-indt (parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ @@ -2677,6 +2092,10 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?n : [ |- nat] +Query assignments: + X = «x» +fx : nat -> nat + : nat -> nat a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 : foo1 ?A2 ?B1 ?B2 3 where @@ -2685,146 +2104,329 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +it = elpi_subproof + : True +it : True + +it is not universe polymorphic +it is transparent +Expands to: Constant elpi.tests.test_ltac.it +elpi_subproof = I + : True +elpi_subproof : True + +elpi_subproof is not universe polymorphic +elpi_subproof is opaque +Expands to: Constant elpi.tests.test_ltac.elpi_subproof +Closed under the global context +H +[nabla c1 \ + seal + (goal + [decl c1 `H` + (prod `b` + (prod `b` (global (indt «bool»)) c2 \ + app [global (indt «eq»), global (indt «bool»), c2, c2]) c2 \ + global (indt «True»))] (X0 c1) + (prod `b` (global (indt «bool»)) c2 \ + app [global (indt «eq»), global (indt «bool»), c2, c2]) (X1 c1) [])] Query assignments: - GR = const «myc» -eq_op myc t t - : bool + L = [tc-instance (const «subrelation_partial_order») 0, + tc-instance (const «PER_Transitive») 3, + tc-instance (const «PreOrder_Transitive») 2, + tc-instance (const «iff_Transitive») 0, + tc-instance (const «eq_Transitive») 0, + tc-instance (const «Equivalence_Transitive») 0, + tc-instance (const «impl_Transitive») 0, + tc-instance (const «StrictOrder_Transitive») 0, + tc-instance (const «StrictOrder_Irreflexive») 0, + tc-instance (const «StrictOrder_Asymmetric») 0, + tc-instance (const «predicate_equivalence_equivalence») 0, + tc-instance (const «relation_equivalence_equivalence») 0, + tc-instance (const «eq_equivalence») 10, + tc-instance (const «iff_equivalence») 0, + tc-instance (const «Equivalence_Reflexive») 0, + tc-instance (const «iff_Reflexive») 0, + tc-instance (const «impl_Reflexive») 0, + tc-instance (const «PreOrder_Reflexive») 2, + tc-instance (const «eq_Reflexive») 0, tc-instance (const «myi») 10, + tc-instance (const «partial_order_antisym») 0, + tc-instance (const «eq_Symmetric») 0, + tc-instance (const «Equivalence_Symmetric») 0, + tc-instance (const «PER_Symmetric») 3, + tc-instance (const «iff_Symmetric») 0, + tc-instance (const «neq_Symmetric») 0, + tc-instance (const «Bool.Decidable_eq_bool») 0, + tc-instance (const «DecidableClass.Decidable_not») 0, + tc-instance (const «inverse_impl_rewrite_relation») 3, + tc-instance (const «impl_rewrite_relation») 3, + tc-instance (const «iff_rewrite_relation») 2, + tc-instance (const «relation_equivalence_rewrite_relation») 0, + tc-instance (const «relation_implication_preorder») 0, + tc-instance (const «Equivalence_PreOrder») 10, + tc-instance (const «predicate_implication_preorder») 0, + tc-instance (const «Equivalence_PER») 10] +COQC tests/test_link_order2.v +make[4]: Nothing to be done for 'real-all'. +fix X0 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ X1 c2 c3) + [c2, fun `p` (X2 c1 c2) c3 \ app [c0, c3, c2]] +fix X0 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, fun `p` (X3 c1 c2) c3 \ app [c0, c3, c2]] Query assignments: - X = c0 \ c1 \ c2 \ -X0 c0 c1 c2 - _uvk_19_ = global (indt «nat») + BO1 = fix X0 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, fun `p` (X3 c1 c2) c3 \ app [c0, c3, c2]] + GR = «Nat.add» + TY = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») + _uvk_1_ = c0 \ c1 \ +global (indt «nat») + _uvk_2_ = c0 \ c1 \ +X3 c0 c1 Syntactic constraints: - {c0 c1 c2 c3 c4 c5 c6} : - decl c6 `z` (app [global (const «N»), c5]), - decl c5 `x` (global (indt «nat»)), - decl c4 `a` (global (indt «bool»)) - ?- evar (X0 c4 c5 c6) (X1 c4 c5 c6) (X0 c4 c5 c6) /* suspended on X0 */ - {c0 c1 c2 c3 c4 c5 c6} : - decl c6 `z` (app [global (const «N»), c5]), - decl c5 `x` (global (indt «nat»)), - decl c4 `a` (global (indt «bool»)) - ?- evar (X2 c4 c5 c6) (sort (typ «elpi.tests.test_HOAS.9»)) - (X1 c4 c5 c6) /* suspended on X2, X1 */ + {c0 c1} : + decl c1 `m` (global (indt «nat»)), decl c0 `n` (global (indt «nat»)) + ?- evar (X3 c0 c1) (sort (typ «elpi.tests.test_quotation.2»)) (X3 c0 c1) /* suspended on X3 */ Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.9 elpi.tests.test_HOAS.8} |= - Set <= elpi.tests.test_HOAS.8 - elpi.tests.test_HOAS.8 <= elpi.tests.test_HOAS.8 + {elpi.tests.test_quotation.3 elpi.tests.test_quotation.2 + elpi.tests.test_quotation.1} |= Set <= elpi.tests.test_quotation.3 ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: - + elpi.tests.test_quotation.3 SORTS: - α3 := Type - α4 + α1 + α2 WEAK CONSTRAINTS: -pred_R = -fun (n n0 : nat) (n1 : nat_R n n0) => -match - n1 in (nat_R n2 n3) - return - (nat_R match n2 with - | 0 => n - | S u => u - end match n3 with - | 0 => n0 - | S u => u - end) -with -| O_R => n1 -| S_R _ _ u1 => u1 -end - : forall n n0 : nat, nat_R n n0 -> nat_R (Nat.pred n) (Nat.pred n0) - -Arguments pred_R (n n)%nat_scope n -pred_R : nat2nat_R Nat.pred Nat.pred - : nat2nat_R Nat.pred Nat.pred -predn_R : nat2nat_R predn predn - : nat2nat_R predn predn -add_R : nat2nat2nat_R Nat.add Nat.add - : nat2nat2nat_R Nat.add Nat.add Query assignments: - DECL = parameter T X0 (sort (typ «prim_eq_class.u0»)) c0 \ - record prim_eq_class (sort (typ «prim_eq_class.u1»)) mk_prim_eq_class - (field [canonical ff, coercion reversible] prim_eq_f - (global (indt «bool»)) c1 \ - field X1 prim_eq_proof - (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ - end-record) - GR = «prim_eq_class» - _uvk_3_ = «prim_eq_class.u0» - _uvk_4_ = «prim_eq_class.u1» + Spilled_1 = const «foo» +foo 3 + : nat +elpi.tests.test_API_module.X.i +[elpi, tests, test_API_module, X, Y] +[elpi, tests, test_API_module, X, Y] +Query assignments: + L = [gref (indt «X.i»), gref (const «X.i_rect»), gref (const «X.i_ind»), + gref (const «X.i_rec»), gref (const «X.i_sind»), gref (const «X.d»), + submodule «elpi.tests.test_API_module.X.Y» + [gref (indt «X.Y.i»), gref (const «X.Y.i_rect»), + gref (const «X.Y.i_ind»), gref (const «X.Y.i_rec»), + gref (const «X.Y.i_sind»), gref (const «X.Y.d»)]] + MP = «elpi.tests.test_API_module.X» + Spilled_1 = [elpi, tests, test_API_module, X, Y] + Spilled_2 = [elpi, tests, test_API_module, X, Y] + Spilled_3 = elpi.tests.test_API_module.X.Y.i + Spilled_4 = elpi.tests.test_API_module.X.i + Spilled_5 = elpi.tests.test_API_module.X.i + XYi = «X.Y.i» + XYr = «X.Y.i_rect» + Xi = «X.i» +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/coercion' +Using coq found in /usr/bin//, from COQBIN or PATH +Query assignments: + B = fun `n` (global (indt «nat»)) c0 \ + app + [global (const «nat_ind»), + fun `n` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]], + let `_` + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app + [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) + (app + [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) + c1 \ c1, + fun `n` (global (indt «nat»)) c1 \ + fun `IHn` + (app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ + let `_` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c1], + app + [global (const «Nat.add»), app [global (indc «S»), c1], + global (indc «O»)]]) + (app + [global (const «f_equal_nat»), global (indt «nat»), + global (indc «S»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ + c3, c0] + GR = «plus_n_O» + RB = fun `n` (global (indt «nat»)) c0 \ + app + [global (const «nat_ind»), + fun `n` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]], + let `_` + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app + [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) + (app + [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) + c1 \ c1, + fun `n` (global (indt «nat»)) c1 \ + fun `IHn` + (app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ + let `_` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c1], + app + [global (const «Nat.add»), app [global (indc «S»), c1], + global (indc «O»)]]) + (app + [global (const «f_equal_nat»), global (indt «nat»), + global (indc «S»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ + c3, c0] + TY = prod `n` (global (indt «nat»)) c0 \ + app + [global (indt «eq»), global (indt «nat»), c0, + app [global (const «Nat.add»), c0, global (indc «O»)]] Universe constraints: UNIVERSES: - + {elpi.tests.test_elaborator.38 elpi.tests.test_elaborator.37 + elpi.tests.test_elaborator.36 elpi.tests.test_elaborator.35 + elpi.tests.test_elaborator.34 elpi.tests.test_elaborator.33 + elpi.tests.test_elaborator.32 elpi.tests.test_elaborator.31 + elpi.tests.test_elaborator.30 elpi.tests.test_elaborator.29 + elpi.tests.test_elaborator.28 elpi.tests.test_elaborator.27 + elpi.tests.test_elaborator.26 elpi.tests.test_elaborator.25 + elpi.tests.test_elaborator.24} |= + Set <= eq.u0 + Set <= Coq.Init.Logic.11 + Set <= elpi.tests.test_elaborator.24 + Set <= elpi.tests.test_elaborator.28 + Set <= elpi.tests.test_elaborator.32 + elpi.tests.test_elaborator.24 <= elpi.tests.test_elaborator.26 + elpi.tests.test_elaborator.25 <= elpi.tests.test_elaborator.26 + elpi.tests.test_elaborator.26 <= elpi.tests.test_elaborator.27 + elpi.tests.test_elaborator.28 <= elpi.tests.test_elaborator.30 + elpi.tests.test_elaborator.29 <= elpi.tests.test_elaborator.30 + elpi.tests.test_elaborator.30 <= elpi.tests.test_elaborator.31 + elpi.tests.test_elaborator.32 <= elpi.tests.test_elaborator.34 + elpi.tests.test_elaborator.33 <= elpi.tests.test_elaborator.34 + elpi.tests.test_elaborator.34 <= elpi.tests.test_elaborator.35 + elpi.tests.test_elaborator.36 <= elpi.tests.test_elaborator.37 + elpi.tests.test_elaborator.37 <= elpi.tests.test_elaborator.38 ALGEBRAIC UNIVERSES: - {prim_eq_class.u1 prim_eq_class.u0} + {} UNDEFINED UNIVERSES: - prim_eq_class.u1 - prim_eq_class.u0 + SORTS: WEAK CONSTRAINTS: -File "./tests/test_param2.v", line 85, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -fun r : prim_eq_class nat => -eq_refl : r = {| prim_eq_f := r; prim_eq_proof := prim_eq_proof _ r |} - : forall r : prim_eq_class nat, - r = {| prim_eq_f := r; prim_eq_proof := prim_eq_proof _ r |} -(* {} |= prim_eq_class.u1 <= eq.u0 *) +hello world +c2 +global (indt «nat») +z +nat Query assignments: - Spilled_1 = «elpi.tests.test_API_module.TA» -Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End + Spilled_1 = c0 \ c1 \ c2 \ +nat + Spilled_2 = c0 \ c1 \ c2 \ +z + T = global (indt «nat») Query assignments: - GR = «nat» -COQC tests/test_invert.v -«elpi.tests.test_API_typecheck.10» + GR = «empty_nat» + TY = global (indt «nat») +fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] Query assignments: - U = «elpi.tests.test_API_typecheck.10» + Spilled_1 = «elpi.tests.test_API_notations.abbr2» + T = fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] + _uvk_31_ = X2 +opaque_3 : nat + +opaque_3 is not universe polymorphic +opaque_3 is opaque +Expands to: Constant elpi.tests.test_API_section.opaque_3 +Query assignments: + E = app + [global (const «op»), global (const «c»), + app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] + TY = app [global (const «field»), global (const «c»)] + _uvk_6_ = X0 Universe constraints: UNIVERSES: - {elpi.tests.test_API_typecheck.10} |= - Set <= elpi.tests.test_API_typecheck.10 + {elpi.tests.test_API_elaborate.19 elpi.tests.test_API_elaborate.18} |= + elpi.tests.test_API_elaborate.19 < elpi.tests.test_API_elaborate.18 + s.u0 <= elpi.tests.test_API_elaborate.19 ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_typecheck.10} + {} UNDEFINED UNIVERSES: - elpi.tests.test_API_typecheck.10 -SORTS: +SORTS: + α11 := Type WEAK CONSTRAINTS: +d1 + : nat +d2 + : nat +i1 + : Prop +i2 + : Prop +k1 + : i1 +k2 + : i2 +r1 + : Set +r2 + : Type +f1 + : r1 -> nat Query assignments: - X = 3 -app [global (const «Nat.mul»), X0, X1] type -test_inv : Type -> bool -> Type - : Type -> bool -> Type -K1_inv : forall (A : Type) (b : bool), b = true -> test_inv A b - : forall (A : Type) (b : bool), b = true -> test_inv A b -K2_inv -: -forall (A : Type) (b x : bool), -A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b - : forall (A : Type) (b x : bool), - A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b -COQC tests/test_elaborator.v -Inductive listR_inv (A : Type) (PA : A -> Type) (idx0 : list A) : Type := - nilR_inv : idx0 = nil -> listR_inv A PA idx0 - | consR_inv : forall a : A, - PA a -> - forall xs : list A, - listR_inv A PA xs -> - idx0 = (a :: xs)%list -> listR_inv A PA idx0. - -Arguments listR_inv A%type_scope PA%function_scope idx0%list_scope -Arguments nilR_inv A%type_scope PA%function_scope idx0%list_scope _ -Arguments consR_inv A%type_scope PA%function_scope - idx0%list_scope a _ xs%list_scope _ _ -COQC tests/test_idx2inv.v + GR = indt «RewriteRelation» + L = [tc-instance (const «inverse_impl_rewrite_relation») 3, + tc-instance (const «impl_rewrite_relation») 3, + tc-instance (const «iff_rewrite_relation») 2, + tc-instance (const «relation_equivalence_rewrite_relation») 0] +f2 + : r2 -> nat +[str fun, str in, str as, int 4, str end, str match, str return, str =>, + str :, str :=, str {, str }, str ;, str ,, str |, str x, int 1, str H, + trm + (fun `x` (global (indt «False»)) c0 \ + match c0 (fun `y` (global (indt «False»)) c1 \ global (indt «nat»)) + [])] +COQC tests/test_link_order3.v Query assignments: D = parameter A explicit (sort (typ «t.u0»)) c0 \ inductive t tt @@ -2850,6 +2452,21 @@ WEAK CONSTRAINTS: +Query assignments: + Spilled_1 = const «f» + Spilled_2 = const «f» + Spilled_3 = const «f» + Spilled_4 = const «f» + Spilled_5 = const «f» +f : forall [S : Type], S -> Prop + +f is not universe polymorphic +Arguments f [S]%type_scope _ + (where some original arguments have been renamed) +f is transparent +Expands to: Constant elpi.tests.test_API_arguments.f +f (S:=bool * bool) + : bool * bool -> Prop ----<<---- enter: coq.say raw: (record foo (sort (typ «Set»)) Build_foo @@ -3045,9 +2662,6 @@ [global (indt «eq»), global (indt «nat»), app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) «foo» -Query assignments: - L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), - cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] ----<<---- enter: coq.say raw: (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ @@ -3248,23 +2862,54 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» -fun `r` (app [global (indt «prim_eq_class»), global (indt «nat»)]) c0 \ - app [primitive (proj elpi.tests.test_API_env.prim_eq_f 1), c0] Query assignments: - F = «elpi.tests.test_API_module.R.F» - FT = «elpi.tests.test_API_module.R.FT» - L = [submodule «elpi.tests.test_API_module.R.S» [gref (const «R.S.x»)], - module-type «elpi.tests.test_API_module.R.P1», - module-type «elpi.tests.test_API_module.R.P2», - «elpi.tests.test_API_module.R.F» module-functor - [«elpi.tests.test_API_module.R.P1», «elpi.tests.test_API_module.R.P2»], - «elpi.tests.test_API_module.R.FT» module-type-functor - [«elpi.tests.test_API_module.R.P2», «elpi.tests.test_API_module.R.P1»], - gref (const «R.a»)] - P1 = «elpi.tests.test_API_module.R.P1» - P2 = «elpi.tests.test_API_module.R.P2» - R = «elpi.tests.test_API_module.R» - S = «elpi.tests.test_API_module.R.S» + I = «Y.i» + ID = j + J = «Y.j» + MP = «elpi.tests.test_API_module.Y» + P = [elpi, tests, test_API_module, Y] +CHR: Uniqueness of typing of frozen--1011 + [] <-> [] +1 |> [decl c0 `x` (uvar frozen--1011 [])] |- frozen--1011 [] : +sort (typ «elpi.tests.test_elaborator.40») +0 |> [] |- frozen--1011 [] : sort (typ «elpi.tests.test_elaborator.39») +0 |> [] |- +unify-eq (sort (typ «elpi.tests.test_elaborator.40»)) + (sort (typ «elpi.tests.test_elaborator.39»)) + +Query assignments: + R = fun `x` X0 c0 \ c0 + T = prod `x` X0 c0 \ X0 + _uvk_87_ = X1 +Syntactic constraints: + {c0} : decl c0 `x` X0 + ?- evar X2 (sort (typ «elpi.tests.test_elaborator.40»)) X0 /* suspended on X2, X0 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.42 elpi.tests.test_elaborator.41 + elpi.tests.test_elaborator.40 elpi.tests.test_elaborator.39} |= + elpi.tests.test_elaborator.39 <= elpi.tests.test_elaborator.41 + elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.39 + elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.41 + elpi.tests.test_elaborator.41 <= elpi.tests.test_elaborator.42 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +c2 +global (indt «nat») +z +nat +Query assignments: + Spilled_1 = c0 \ c1 \ c2 \ +nat + Spilled_2 = c0 \ c1 \ c2 \ +z + T = global (indt «nat») fun `v` (app [global (indt «Vector.t»), global (indt «nat»), @@ -3405,258 +3050,132 @@ WEAK CONSTRAINTS: -COQC tests/test_ltac.v -is_list_to_is_list_inv -: -forall (A : Type) (PA : A -> Type) (l : list A), -is_list A PA l -> is_list_inv A PA l - : forall (A : Type) (PA : A -> Type) (l : list A), - is_list A PA l -> is_list_inv A PA l -COQC tests/test_lens.v -Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). Query assignments: - E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). -COQC tests/test_ltac3.v - {c0 c1 c2 c3} : - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3) - (prod `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ - prod `j` (app [c1, c3]) c5 \ - app - [global (indt «ex»), app [c1, c3], - fun `a` (app [c1, c3]) c6 \ - app [global (indt «eq»), app [c1, c3], c6, c6]]) - (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ -Goal: -[] - - -[decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] ------------- -prod `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ - prod `j` (app [c1, c3]) c5 \ - app - [global (indt «ex»), app [c1, c3], - fun `a` (app [c1, c3]) c6 \ - app [global (indt «eq»), app [c1, c3], c6, c6]] -x w = Type -> x w -> exists a : x w, a = a - {c0 c1 c2 c3} : - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3) - (prod `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ - prod `j` (app [c1, c3]) c5 \ - app - [global (indt «ex»), app [c1, c3], - fun `a` (app [c1, c3]) c6 \ - app [global (indt «eq»), app [c1, c3], c6, c6]]) - (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ -Goal: -[] - - -[decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] ------------- -prod `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ - prod `j` (app [c1, c3]) c5 \ - app - [global (indt «ex»), app [c1, c3], - fun `a` (app [c1, c3]) c6 \ - app [global (indt «eq»), app [c1, c3], c6, c6]] -x w = Type -> x w -> exists a : x w, a = a - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X2 c0 c1 c2 c3 c4 c5) - (app - [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, - X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ -Goal: -[] - - -[decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] ------------- -app - [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, - X1 c0 c1 c2 c3 c4 c5] ?elpi_evar = ?elpi_evar - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X2 c0 c1 c2 c3 c4 c5) - (app - [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, - X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ + GR1 = indc «Vector.nil» + GR2 = indt «nat» + GR3 = const «A» +make[4]: Nothing to be done for 'real-all'. Query assignments: - I = «eq» - P1 = «carrier» - P2 = «eq_op» -Goal: -[] - + Spilled_1 = «elpi.tests.test_API_notations.abbr2» +COQC tests/test_link_order4.v +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/coercion' +########################## testing APPS ############################ +make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/derive' +Using coq found in /usr/bin//, from COQBIN or PATH +Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory -[decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] ------------- -app - [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, - X1 c0 c1 c2 c3 c4 c5] ?elpi_evar0 = ?elpi_evar0 Query assignments: - GR = «Nat.add» - MP = «Coq.Init.Datatypes» ----------------------------------- - {c0 c1} : decl c1 `a` (global (indt «bool»)) - ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ - {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ -EVARS: - ?X11==[a |- ?elpi_evar] (internal placeholder) {?elpi_evar0} - ?X10==[ |- Type] (internal placeholder) {?elpi_evar} - ?X9==[a |- => ?elpi_evar0] (internal placeholder) - ?X8==[a |- => ?elpi_evar] (internal placeholder) - -SHELF: -FUTURE GOALS STACK:?X11 -?X10 - -Coq-Elpi mapping: -RAW: -?X10 <-> X0 -?X11 <-> X2 -ELAB: -?X10 <-> X1 -?X11 <-> X2 - -X2 c0 : X1 + X = 3 +raw: +parameter A explicit (global (const «T1»)) c0 \ + inductive ind1 tt + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.22»))) c1 \ + [constructor K1 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), + constructor K2 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c2 \ + arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), + constructor K3 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c2 \ + arity (prod `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] +app [global (const «Nat.mul»), X0, X1] type +elab1: +parameter A explicit (global (const «T1»)) c0 \ + inductive ind1 tt + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.23»)) + c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.25»))) c1 \ + [constructor K1 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.28»)) + c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), + constructor K2 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.30»)) + c2 \ + arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), + constructor K3 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.33»)) + c2 \ + arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] +elab2: +parameter A explicit (global (const «T1»)) c0 \ + parameter B explicit (sort (typ «ind1.u0»)) c1 \ + inductive ind1 tt (arity (sort (typ «ind1.u1»))) c2 \ + [constructor K1 (arity (prod `_` c2 c3 \ c2)), + constructor K2 + (arity (prod `_` (app [global (const «f1»), c0]) c3 \ c2)), + constructor K3 + (arity (prod `_` (app [global (const «f1»), c0]) c3 \ c2))] +raw: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «f1.u0»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +elab1: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «elpi.tests.test_API_elaborate.38»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +elab2: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «ind2.u0»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +raw: +record ind3 (sort (typ «elpi.tests.test_API_elaborate.41»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 + (sort (typ «elpi.tests.test_API_elaborate.40»)) c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +elab1: +record ind3 (sort (typ «elpi.tests.test_API_elaborate.42»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 + (sort (typ «elpi.tests.test_API_elaborate.43»)) c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +elab2: +record ind3 (sort (typ «ind3.u0»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 (sort (typ «ind3.u1»)) + c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +forall x : ind3, x -> Prop + : Type +COQC tests/test_link_order5.v Query assignments: - TY = X1 - X = c0 \ c1 \ -X2 c0 -Syntactic constraints: - {c0 c1} : decl c1 `a` (global (indt «bool»)) - ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ - {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.10} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α5 -WEAK CONSTRAINTS: - + T = sort (typ «elpi.tests.test_HOAS.3») + U = «elpi.tests.test_HOAS.3» +Query assignments: + Spilled_1 = const «f» +f : forall [S : Type], S -> Prop +f is not universe polymorphic +Arguments f [S]%type_scope / _ + (where some original arguments have been renamed) +The reduction tactics unfold f when applied to 1 argument +f is transparent +Expands to: Constant elpi.tests.test_API_arguments.f +f (S:=bool * bool) + : bool * bool -> Prop + = fun x : bool => x = x + : bool -> Prop Query assignments: - I = «foo» + GR = indt «RewriteRelation» +COQC tests/test_link_order6.v +COQDEP VFILES Query assignments: - C = «pc» + I = «foo» ----<<---- enter: coq.say raw: (parameter A explicit X0 c0 \ @@ -3886,25 +3405,83 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» -3 Query assignments: - X = 3 -z + GRy = EXN PRINTING: Not_found + I = EXN PRINTING: Not_found + L = [gref (const «A.z»), gref (const «A.i»)] + MP = «elpi.tests.test_API_module.A» + MP_TA = «elpi.tests.test_API_module.TA» + _uvk_1_ = «A.i.u0» + _uvk_2_ = «elpi.tests.test_API_module.11» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API_module.11 A.i.u0} +UNDEFINED UNIVERSES: + elpi.tests.test_API_module.11 + A.i.u0 +SORTS: + +WEAK CONSTRAINTS: + + +Module +A + : TA +:= Struct + Definition x + Module B + Definition z + Inductive i1 + Definition i1_rect + Definition i1_ind + Definition i1_rec + Definition i1_sind + Definition i + End + +A.z : nat +A.i + : Type +*** [ A.i : Type ] +Illegal application (Non-functional construction): +The expression "Prop" of type "Type" +cannot be applied to the term + "Prop" : "Type" Query assignments: - GR = const «myc1» + E = Illegal application (Non-functional construction): +The expression "Prop" of type "Type" +cannot be applied to the term + "Prop" : "Type" +3 Query assignments: - A = «elpi.tests.test_API.succ» - GR = «Nat.add» - MP = «Coq.Init.Datatypes» -eq_op myc1 t1 t1 - : bool - X1 = [loc-gref (const «Nat.add»)] - X2 = [loc-gref (const «Nat.add»)] - X3 = [loc-abbreviation «elpi.tests.test_API.succ»] - X4 = [loc-modpath «Coq.Init.Datatypes»] + X = 3 Query assignments: - B = fix `add` 0 + R = fun `x` (global (indt «nat»)) c0 \ + app [global (const «Nat.add»), c0, global (indc «O»)] + T = prod `x` (global (indt «nat»)) c0 \ global (indt «nat») + _uvk_109_ = X0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.46 elpi.tests.test_elaborator.45 + elpi.tests.test_elaborator.44 elpi.tests.test_elaborator.43} |= + elpi.tests.test_elaborator.43 <= elpi.tests.test_elaborator.45 + elpi.tests.test_elaborator.44 <= elpi.tests.test_elaborator.45 + elpi.tests.test_elaborator.45 <= elpi.tests.test_elaborator.46 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +add_equal +Query assignments: + BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ fun `n` (global (indt «nat»)) c1 \ @@ -3914,67 +3491,208 @@ fun `p` (global (indt «nat»)) c3 \ app [global (indc «S»), app [c0, c3, c2]]] GR = «Nat.add» - RB = fix `add` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]] - T = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») + NGR = «add_equal» + Name = add_equal + S = add + Spilled_1 = add_equal + Spilled_2 = add_equal TY = prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -Syntactic constraints: +add_equal : nat -> nat -> nat + +add_equal is not universe polymorphic +Arguments add_equal (n m)%nat_scope +add_equal is opaque +Expands to: Constant elpi.tests.test_API_env.add_equal {c0 c1 c2 c3} : - decl c3 `n` (global (indt «nat»)), decl c2 `m` (global (indt «nat»)), - decl c1 `n` (global (indt «nat»)), - decl c0 `add` - (prod `n` (global (indt «nat»)) c1 \ - prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) - ?- evar (X0 c0 c1 c2 c3) (sort (typ «elpi.tests.test_elaborator.17»)) + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3) + (prod `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ + prod `j` (app [c1, c3]) c5 \ + app + [global (indt «ex»), app [c1, c3], + fun `a` (app [c1, c3]) c6 \ + app [global (indt «eq»), app [c1, c3], c6, c6]]) (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ +Goal: +[] + + +[decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] +------------ +prod `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ + prod `j` (app [c1, c3]) c5 \ + app + [global (indt «ex»), app [c1, c3], + fun `a` (app [c1, c3]) c6 \ + app [global (indt «eq»), app [c1, c3], c6, c6]] +x w = Type -> x w -> exists a : x w, a = a + {c0 c1 c2 c3} : + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3) + (prod `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ + prod `j` (app [c1, c3]) c5 \ + app + [global (indt «ex»), app [c1, c3], + fun `a` (app [c1, c3]) c6 \ + app [global (indt «eq»), app [c1, c3], c6, c6]]) + (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ +Goal: +[] + + +[decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] +------------ +prod `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ + prod `j` (app [c1, c3]) c5 \ + app + [global (indt «ex»), app [c1, c3], + fun `a` (app [c1, c3]) c6 \ + app [global (indt «eq»), app [c1, c3], c6, c6]] +x w = Type -> x w -> exists a : x w, a = a + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X2 c0 c1 c2 c3 c4 c5) + (app + [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, + X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ +Goal: +[] + + +[decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] +------------ +app + [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, + X1 c0 c1 c2 c3 c4 c5] ?elpi_evar = ?elpi_evar + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X2 c0 c1 c2 c3 c4 c5) + (app + [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, + X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ +Goal: +[] + + +[decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»))] +------------ +app + [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, + X1 c0 c1 c2 c3 c4 c5] ?elpi_evar0 = ?elpi_evar0 +Query assignments: + U = «elpi.tests.test_HOAS.4» Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.23 elpi.tests.test_elaborator.22 - elpi.tests.test_elaborator.21 elpi.tests.test_elaborator.20 - elpi.tests.test_elaborator.19 elpi.tests.test_elaborator.18 - elpi.tests.test_elaborator.17 elpi.tests.test_elaborator.16 - elpi.tests.test_elaborator.15 elpi.tests.test_elaborator.14 - elpi.tests.test_elaborator.13 elpi.tests.test_elaborator.12 - elpi.tests.test_elaborator.11 elpi.tests.test_elaborator.10 - elpi.tests.test_elaborator.9 elpi.tests.test_elaborator.8 - elpi.tests.test_elaborator.7 elpi.tests.test_elaborator.6 - elpi.tests.test_elaborator.5 elpi.tests.test_elaborator.4 - elpi.tests.test_elaborator.3 elpi.tests.test_elaborator.2 - elpi.tests.test_elaborator.1} |= - Set <= elpi.tests.test_elaborator.1 - Set <= elpi.tests.test_elaborator.2 - Set <= elpi.tests.test_elaborator.3 - Set <= elpi.tests.test_elaborator.8 - Set <= elpi.tests.test_elaborator.12 - Set <= elpi.tests.test_elaborator.16 - Set <= elpi.tests.test_elaborator.20 - elpi.tests.test_elaborator.1 <= elpi.tests.test_elaborator.6 - elpi.tests.test_elaborator.2 <= elpi.tests.test_elaborator.4 - elpi.tests.test_elaborator.3 <= elpi.tests.test_elaborator.4 - elpi.tests.test_elaborator.4 <= elpi.tests.test_elaborator.5 - elpi.tests.test_elaborator.5 <= elpi.tests.test_elaborator.6 - elpi.tests.test_elaborator.6 <= elpi.tests.test_elaborator.7 - elpi.tests.test_elaborator.8 <= elpi.tests.test_elaborator.10 - elpi.tests.test_elaborator.9 <= elpi.tests.test_elaborator.10 - elpi.tests.test_elaborator.10 <= elpi.tests.test_elaborator.11 - elpi.tests.test_elaborator.12 <= elpi.tests.test_elaborator.14 - elpi.tests.test_elaborator.13 <= elpi.tests.test_elaborator.14 - elpi.tests.test_elaborator.14 <= elpi.tests.test_elaborator.15 - elpi.tests.test_elaborator.16 <= elpi.tests.test_elaborator.18 - elpi.tests.test_elaborator.17 <= elpi.tests.test_elaborator.18 - elpi.tests.test_elaborator.18 <= elpi.tests.test_elaborator.19 - elpi.tests.test_elaborator.20 <= elpi.tests.test_elaborator.22 - elpi.tests.test_elaborator.21 <= elpi.tests.test_elaborator.22 - elpi.tests.test_elaborator.22 <= elpi.tests.test_elaborator.23 + {elpi.tests.test_HOAS.4} |= ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: @@ -3984,37 +3702,32 @@ WEAK CONSTRAINTS: -File "./tests/test_HOAS.v", line 123, characters 0-34: -Warning: Use of “Require” inside a module is fragile. It is not recommended -to use this functionality in finished proof scripts. -[require-in-module,fragile,default] -Raw term: -app - [global (const «add»), primitive (uint63 2000000003333002), - primitive (uint63 1)] -Nice term: add 2000000003333002 1 -Red: -2000000003333003 -File "./tests/test_HOAS.v", line 127, characters 0-34: -Warning: Use of “Require” inside a module is fragile. It is not recommended -to use this functionality in finished proof scripts. -[require-in-module,fragile,default] -Raw term: -app - [global (const «add»), primitive (float64 24000000000000), - primitive (float64 1)] -Nice term: 24000000000000 + 1 -Red: 24000000000001 +Query assignments: + E = app + [global (const «op»), global (const «c»), + app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] + TY = app [global (const «field»), global (const «c»)] +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_elaborate.50 elpi.tests.test_API_elaborate.49} |= + elpi.tests.test_API_elaborate.50 < elpi.tests.test_API_elaborate.49 + s.u0 <= elpi.tests.test_API_elaborate.50 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + α19 := Type +WEAK CONSTRAINTS: + + +Query assignments: + GR = indt «True» +unknown_gref Query assignments: I = «foo» -_f1 : Lens fo_record fo_record peano peano - : Lens fo_record fo_record peano peano -_f2 : Lens fo_record fo_record unit unit - : Lens fo_record fo_record unit unit -@_f3 : forall A : Type, Lens (pa_record A) (pa_record A) peano peano - : forall A : Type, Lens (pa_record A) (pa_record A) peano peano -@_f4 : forall A : Type, Lens (pa_record A) (pa_record A) A A - : forall A : Type, Lens (pa_record A) (pa_record A) A A ----<<---- enter: coq.arity->term (parameter P explicit (sort (typ «elpi.tests.test_arg_HOAS.98»)) c0 \ @@ -4043,8 +3756,6 @@ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ global (indt «nat»))) illtyped definition -@_pf3 : forall A : Type, Lens (pr_record A) (pr_record A) peano peano - : forall A : Type, Lens (pr_record A) (pr_record A) peano peano ---->>---- exit: std.assert-ok! (coq.typecheck @@ -4069,8 +3780,6 @@ (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.98»)) c0 \ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X1 X2 -@_pf4 : forall A : Type, Lens (pr_record A) (pr_record A) A A - : forall A : Type, Lens (pr_record A) (pr_record A) A A ---->>---- exit: coq.env.add-const x1 (fun `P` (sort (typ «x1.u0»)) c0 \ @@ -4082,7 +3791,6 @@ (prod `P` (sort (typ «x1.u0»)) c0 \ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X1 «x1» -ok x1 : forall P : Type, P -> nat -> nat : forall P : Type, P -> nat -> nat eq_refl : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) @@ -4117,11 +3825,24 @@ (prod `n` (global (indt «nat»)) c0 \ sort (typ «y.u0»)) «y» y : nat -> Type : nat -> Type +Query assignments: + MP_TA = «elpi.tests.test_API_module.TA» + MP_TF = «elpi.tests.test_API_module.TF» + Spilled_1 = «elpi.tests.test_API_module.a» + Spilled_2 = const const EXN PRINTING: Not_found +Module +F + : Funsig (a:TA) Funsig (b:TA) TF +:= Functor (a:TA) Functor (b:TA) Struct Definition w : nat. End + +Module B : Sig Parameter w : nat. End := (F A A) + ----<<---- enter: coq.arity->term (parameter P explicit (sort (typ X0)) c0 \ parameter w explicit c0 c1 \ parameter n explicit (global (indt «nat»)) c2 \ arity (X1 c0 c1 c2)) X2 +*** [ B.w : nat ] ---->>---- exit: coq.arity->term (parameter P explicit (sort (typ X0)) c0 \ @@ -4144,18 +3865,6 @@ (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.105»)) c0 \ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ X7 c0 c1 c2)) illtyped arity -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {myind.u0} -UNDEFINED UNIVERSES: - myind.u0 -SORTS: - -WEAK CONSTRAINTS: - - ----<<---- enter: std.assert-ok! (coq.elaborate-skeleton @@ -4198,14 +3907,6 @@ (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.105»)) c0 \ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X10 X11 -myind true false : Prop - : Prop -K2 true : myind true true - : myind true true -myind1 true false : Prop - : Prop -K21 true : myind1 true true - : myind1 true true ---->>---- exit: coq.env.add-const x1 (fun `P` (sort (typ «x1.u1»)) c0 \ @@ -4280,32 +3981,27 @@ coq.env.add-const x (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) X1 «x» +Unable to unify "bool" with "nat". +Query assignments: + Msg = Unable to unify "bool" with "nat". +«myfalse» +Query assignments: + F = indt «False» + GR = «myfalse» +myfalse + : False fun `x` X0 c0 \ app [X1, c0] Query assignments: X = X1 Y = fun `x` X0 c0 \ app [X1, c0] _uvk_34_ = X0 -COQC tests/test_tag.v -it = elpi_subproof - : True -it : True - -it is not universe polymorphic -it is transparent -Expands to: Constant elpi.tests.test_ltac.it -elpi_subproof = I - : True -elpi_subproof : True - -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context -COQC tests/test_cache_async.v -Universe constraints: +sort (typ X0) Query assignments: - P = const «eq_op» -COQC tests/test_COQ_ELPI_ATTRIBUTES.v + _uvk_129_ = X0 +COQC tests/test_derive_stdlib.v +Query assignments: + U = «foo» +Finished transaction in 1.705 secs (1.702u,0.s) (successful) fun `r` (global (indt «nat»)) c0 \ fun `p` (prod `y` (global (indt «nat»)) c1 \ @@ -4330,159 +4026,88 @@ prod `y` (global (indt «nat»)) c3 \ app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] +COQC tests/test_link_order7.v fun u : nat => {| val := oval u; Sub := Ord u; Sub_rect := inlined_sub_rect |} : forall u : nat, is_SUB nat (fun x : nat => leq x u) (ord u) +«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» +COQC tests/test_link_order8.v +COQC tests/test_API_new_pred.v Query assignments: - C = «Nat.add» - F = TODO - T = app - [fix `add` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = app - [fix `plus` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - _uvk_35_ = global (indt «nat») - _uvk_36_ = c0 \ -global (indt «nat») - _uvk_37_ = c0 \ c1 \ -global (indt «nat») - _uvk_38_ = c0 \ -global (indt «nat») - _uvk_39_ = c0 \ c1 \ -global (indt «nat») - _uvk_40_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_41_ = c0 \ c1 \ c2 \ -global (indt «nat») -COQC tests/perf_calls.v + MP_TA = «elpi.tests.test_API_module.TA» +Module Type TB = Funsig (A:TA) Sig End +parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) + c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `x` (global (indt «nat»)) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c4, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]]) c6 \ + app [c2, c3, c4, c5])), + constructor a_k2 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] Query assignments: - B = fun `n` (global (indt «nat»)) c0 \ - app - [global (const «nat_ind»), - fun `n` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]], - let `_` - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app - [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) - (app - [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) - c1 \ c1, - fun `n` (global (indt «nat»)) c1 \ - fun `IHn` - (app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ - let `_` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c1], - app - [global (const «Nat.add»), app [global (indc «S»), c1], - global (indc «O»)]]) - (app - [global (const «f_equal_nat»), global (indt «nat»), - global (indc «S»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ - c3, c0] - GR = «plus_n_O» - RB = fun `n` (global (indt «nat»)) c0 \ - app - [global (const «nat_ind»), - fun `n` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]], - let `_` - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app - [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) - (app - [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) - c1 \ c1, - fun `n` (global (indt «nat»)) c1 \ - fun `IHn` - (app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ - let `_` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c1], - app - [global (const «Nat.add»), app [global (indc «S»), c1], - global (indc «O»)]]) - (app - [global (const «f_equal_nat»), global (indt «nat»), - global (indc «S»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ - c3, c0] - TY = prod `n` (global (indt «nat»)) c0 \ - app - [global (indt «eq»), global (indt «nat»), c0, - app [global (const «Nat.add»), c0, global (indc «O»)]] -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.38 elpi.tests.test_elaborator.37 - elpi.tests.test_elaborator.36 elpi.tests.test_elaborator.35 - elpi.tests.test_elaborator.34 elpi.tests.test_elaborator.33 - elpi.tests.test_elaborator.32 elpi.tests.test_elaborator.31 - elpi.tests.test_elaborator.30 elpi.tests.test_elaborator.29 - elpi.tests.test_elaborator.28 elpi.tests.test_elaborator.27 - elpi.tests.test_elaborator.26 elpi.tests.test_elaborator.25 - elpi.tests.test_elaborator.24} |= - Set <= eq.u0 - Set <= Coq.Init.Logic.11 - Set <= elpi.tests.test_elaborator.24 - Set <= elpi.tests.test_elaborator.28 - Set <= elpi.tests.test_elaborator.32 - elpi.tests.test_elaborator.24 <= elpi.tests.test_elaborator.26 - elpi.tests.test_elaborator.25 <= elpi.tests.test_elaborator.26 - elpi.tests.test_elaborator.26 <= elpi.tests.test_elaborator.27 - elpi.tests.test_elaborator.28 <= elpi.tests.test_elaborator.30 - elpi.tests.test_elaborator.29 <= elpi.tests.test_elaborator.30 - elpi.tests.test_elaborator.30 <= elpi.tests.test_elaborator.31 - elpi.tests.test_elaborator.32 <= elpi.tests.test_elaborator.34 - elpi.tests.test_elaborator.33 <= elpi.tests.test_elaborator.34 - elpi.tests.test_elaborator.34 <= elpi.tests.test_elaborator.35 - elpi.tests.test_elaborator.36 <= elpi.tests.test_elaborator.37 - elpi.tests.test_elaborator.37 <= elpi.tests.test_elaborator.38 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - + D = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) + c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `x` (global (indt «nat»)) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c4, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]]) c6 \ + app [c2, c3, c4, c5])), + constructor a_k2 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] + I = «inductive_nup.foo1» +foo1 ?A2 ?B1 ?B2 ?n : Type + : Type +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?n : [ |- nat] +a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 + : foo1 ?A2 ?B1 ?B2 3 +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] Query assignments: GR = indc «Ord» K = global (indc «Ord») @@ -4584,251 +4209,145 @@ Query assignments: - _uvk_6_ = «nuind.u0» - _uvk_7_ = «nuind.u1» + Cons = global (indc «cons») + GRCons = indc «cons» + GRList = indt «list» + GRNat = indt «nat» + GRNil = indc «nil» + GRZero = indc «O» + L = app + [global (indc «cons»), global (indt «nat»), global (indc «O»), + app [global (indc «nil»), global (indt «nat»)]] + LE = app + [global (indc «cons»), global (indt «nat»), global (indc «O»), + app [global (indc «nil»), global (indt «nat»)]] + List = global (indt «list») + Nat = global (indt «nat») + Nil = global (indc «nil») + Zero = global (indc «O») Universe constraints: UNIVERSES: - + {elpi.tests.test_API_typecheck.4 elpi.tests.test_API_typecheck.3 + elpi.tests.test_API_typecheck.2 elpi.tests.test_API_typecheck.1} |= + elpi.tests.test_API_typecheck.3 < elpi.tests.test_API_typecheck.2 + elpi.tests.test_API_typecheck.4 < elpi.tests.test_API_typecheck.1 + Set <= elpi.tests.test_API_typecheck.3 + Set <= elpi.tests.test_API_typecheck.4 + elpi.tests.test_API_typecheck.3 <= list.u0 + elpi.tests.test_API_typecheck.4 <= list.u0 ALGEBRAIC UNIVERSES: - {nuind.u1 nuind.u0} + {} UNDEFINED UNIVERSES: - nuind.u1 - nuind.u0 -SORTS: +SORTS: + α1 := Type + α2 := Type WEAK CONSTRAINTS: Query assignments: - X = «elpi.tests.test_API.1» + S = sort (typ «elpi.tests.test_elaborator.48») + T = sort (typ «elpi.tests.test_elaborator.47») + _uvk_130_ = «elpi.tests.test_elaborator.47» Universe constraints: UNIVERSES: - {elpi.tests.test_API.1} |= + {elpi.tests.test_elaborator.48 elpi.tests.test_elaborator.47} |= + elpi.tests.test_elaborator.47 < elpi.tests.test_elaborator.48 ALGEBRAIC UNIVERSES: - {} + {elpi.tests.test_elaborator.47} UNDEFINED UNIVERSES: - + elpi.tests.test_elaborator.47 SORTS: WEAK CONSTRAINTS: -fun x : nuind nat 3 false => -match x in (nuind _ _ b) return (b = b) with -| k1 _ _ => eq_refl : true = true -| k2 _ _ x0 => (fun _ : nuind nat 1 false => eq_refl : false = false) x0 -end - : nuind nat 3 false -> false = false -parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) - c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `x` (global (indt «nat»)) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c4, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]]) c6 \ - app [c2, c3, c4, c5])), - constructor a_k2 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Query assignments: - D = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) - c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `x` (global (indt «nat»)) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c4, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]]) c6 \ - app [c2, c3, c4, c5])), - constructor a_k2 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] - I = «inductive_nup.foo1» -foo1 ?A2 ?B1 ?B2 ?n : Type - : Type -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?n : [ |- nat] -a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 - : foo1 ?A2 ?B1 ?B2 3 -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -Query assignments: - W = const «W» -COQC tests/test_ctx_cache.v - evar (X0) (global (indt «nat»)) X1 /* suspended on X0, X1 */ -X0 global (indt «nat») - evar (X2) (global (indt «nat»)) X3 /* suspended on X2, X3 */ -hello -eq_refl : one = 1 - : one = 1 -Query assignments: - C = «Nat.add» - F = TODO - T = app - [fun `n` (global (indt «nat»)) c0 \ - fun `m` (global (indt «nat»)) c1 \ - match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) - [c1, - fun `p` (global (indt «nat»)) c2 \ - app - [global (indc «S»), - app - [fix `add` 0 - (prod `n` (global (indt «nat»)) c3 \ - prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) - c3 \ - fun `n` (global (indt «nat»)) c4 \ - fun `m` (global (indt «nat»)) c5 \ - match c4 - (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) - [c5, - fun `p` (global (indt «nat»)) c6 \ - app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = app - [fun `n` (global (indt «nat»)) c0 \ - fun `m` (global (indt «nat»)) c1 \ - match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) - [c1, - fun `p` (global (indt «nat»)) c2 \ - app - [global (indc «S»), - app - [fix `plus` 0 - (prod `n` (global (indt «nat»)) c3 \ - prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) - c3 \ - fun `n` (global (indt «nat»)) c4 \ - fun `m` (global (indt «nat»)) c5 \ - match c4 - (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) - [c5, - fun `p` (global (indt «nat»)) c6 \ - app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - _uvk_42_ = global (indt «nat») - _uvk_43_ = c0 \ -global (indt «nat») - _uvk_44_ = c0 \ c1 \ -global (indt «nat») - _uvk_45_ = c0 \ c1 \ -global (indt «nat») - _uvk_46_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_47_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_48_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_49_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_50_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_51_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_52_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») -c0 global (indt «nat») -Query assignments: - T = global (indt «nat») -[cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] -Query assignments: - L = [cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] - P = const «eq_op» - W = const «Z1» -CHR: Uniqueness of typing of frozen--1011 + [] <-> [] -1 |> [decl c0 `x` (uvar frozen--1011 [])] |- frozen--1011 [] : -sort (typ «elpi.tests.test_elaborator.40») -0 |> [] |- frozen--1011 [] : sort (typ «elpi.tests.test_elaborator.39») -0 |> [] |- -unify-eq (sort (typ «elpi.tests.test_elaborator.40»)) - (sort (typ «elpi.tests.test_elaborator.39»)) - +parameter T X0 (sort (typ X1)) c0 \ + record eq_class (sort (typ X2)) mk_eq_class + (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ + field X3 eq_proof + (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ + end-record) +foo : nat + : nat +bar : bool -> nat + : bool -> nat Query assignments: - R = fun `x` X0 c0 \ c0 - T = prod `x` X0 c0 \ X0 - _uvk_87_ = X1 -Syntactic constraints: - {c0} : decl c0 `x` X0 - ?- evar X2 (sort (typ «elpi.tests.test_elaborator.40»)) X0 /* suspended on X2, X0 */ + DECL = parameter T X0 (sort (typ «eq_class.u0»)) c0 \ + record eq_class (sort (typ «eq_class.u1»)) mk_eq_class + (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ + field X3 eq_proof + (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ + end-record) + GR = «eq_class» + _uvk_1_ = «eq_class.u0» + _uvk_2_ = «eq_class.u1» Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.42 elpi.tests.test_elaborator.41 - elpi.tests.test_elaborator.40 elpi.tests.test_elaborator.39} |= - elpi.tests.test_elaborator.39 <= elpi.tests.test_elaborator.41 - elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.39 - elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.41 - elpi.tests.test_elaborator.41 <= elpi.tests.test_elaborator.42 + ALGEBRAIC UNIVERSES: - {} + {eq_class.u1 eq_class.u0} UNDEFINED UNIVERSES: - + eq_class.u1 + eq_class.u0 SORTS: WEAK CONSTRAINTS: +Record eq_class (T : Type@{eq_class.u0}) : Type@{eq_class.u1} := mk_eq_class + { eq_f : bool; eq_proof : eq_f = eq_f }. + +Arguments eq_class T%type_scope +Arguments mk_eq_class T%type_scope eq_f%bool_scope eq_proof +fun x : eq_class nat => x : bool + : eq_class nat -> bool +p <- eq_proof ( xxx ) +COQC tests/test_link_order_import0.v +COQC tests/test_vernacular2.v Query assignments: - X = typ «elpi.tests.test_API.2» - Y = typ «elpi.tests.test_API.3» + X = c0 \ c1 \ c2 \ +X0 c0 c1 c2 + _uvk_19_ = global (indt «nat») +Syntactic constraints: + {c0 c1 c2 c3 c4 c5 c6} : + decl c6 `z` (app [global (const «N»), c5]), + decl c5 `x` (global (indt «nat»)), + decl c4 `a` (global (indt «bool»)) + ?- evar (X0 c4 c5 c6) (X1 c4 c5 c6) (X0 c4 c5 c6) /* suspended on X0 */ + {c0 c1 c2 c3 c4 c5 c6} : + decl c6 `z` (app [global (const «N»), c5]), + decl c5 `x` (global (indt «nat»)), + decl c4 `a` (global (indt «bool»)) + ?- evar (X2 c4 c5 c6) (sort (typ «elpi.tests.test_HOAS.9»)) + (X1 c4 c5 c6) /* suspended on X2, X1 */ Universe constraints: UNIVERSES: - {elpi.tests.test_API.3 elpi.tests.test_API.2} |= - elpi.tests.test_API.2 <= elpi.tests.test_API.3 + {elpi.tests.test_HOAS.9 elpi.tests.test_HOAS.8} |= + Set <= elpi.tests.test_HOAS.8 + elpi.tests.test_HOAS.8 <= elpi.tests.test_HOAS.8 ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: SORTS: - + α3 := Type + α4 WEAK CONSTRAINTS: Query assignments: + GR = «nat» +Query assignments: + GR = const «myc» +eq_op myc t t + : bool +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.A» +Module IA := Struct Definition z : nat. Definition i : Type. End + +COQC tests/test_ltac2.v +Query assignments: I = «inductive_nup.r» R = parameter A explicit (sort (typ «r.u0»)) c0 \ parameter a explicit c0 c1 \ @@ -4865,185 +4384,99 @@ X1 is not universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X1 -COQC tests/test_libobject_A.v -empty_tag : tag empty - : tag empty -unit_tag : tag unit - : tag unit -peano_tag : tag peano - : tag peano -option_tag : forall A : Type, tag (option A) - : forall A : Type, tag (option A) -pair_tag : forall A B : Type, tag (pair A B) - : forall A B : Type, tag (pair A B) -seq_tag : forall A : Type, tag (seq A) - : forall A : Type, tag (seq A) -rose_tag : forall A : Type, tag (rose A) - : forall A : Type, tag (rose A) -nest_tag : forall A : Type, tag (nest A) - : forall A : Type, tag (nest A) -w_tag : forall A : Type, tag (w A) - : forall A : Type, tag (w A) -vect_tag : forall (A : Type) (i : peano), tag (vect A i) - : forall (A : Type) (i : peano), tag (vect A i) -dyn_tag : tag dyn - : tag dyn -beta_tag : forall A : Type, tag (beta A) - : forall A : Type, tag (beta A) -iota_tag : tag iota - : tag iota -large_tag : tag large - : tag large -prim_int_tag : tag prim_int - : tag prim_int -prim_float_tag : tag prim_float - : tag prim_float -pa_record_tag : forall A : Type, tag (pa_record A) - : forall A : Type, tag (pa_record A) -pr_record_tag : forall A : Type, tag (pr_record A) - : forall A : Type, tag (pr_record A) -ord_tag : forall p : peano, tag (ord p) - : forall p : peano, tag (ord p) -ord2_tag : forall p : peano, tag (ord2 p) - : forall p : peano, tag (ord2 p) -val_tag : tag val - : tag val -Query assignments: - C = «Nat.add» - F = TODO - T = match (app [global (indc «S»), global (indc «O»)]) - (fun `n` (global (indt «nat»)) c0 \ global (indt «nat»)) - [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], - fun `p` (global (indt «nat»)) c0 \ - app - [global (indc «S»), - app - [fix `add` 0 - (prod `n` (global (indt «nat»)) c1 \ - prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ - fun `n` (global (indt «nat»)) c2 \ - fun `m` (global (indt «nat»)) c3 \ - match c2 - (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) - [c3, - fun `p` (global (indt «nat»)) c4 \ - app [global (indc «S»), app [c1, c4, c3]]], c0, - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = match (app [global (indc «S»), global (indc «O»)]) - (fun `_` (global (indt «nat»)) c0 \ global (indt «nat»)) - [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], - fun `p` (global (indt «nat»)) c0 \ - app - [global (indc «S»), - app - [fix `plus` 0 - (prod `n` (global (indt «nat»)) c1 \ - prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ - fun `n` (global (indt «nat»)) c2 \ - fun `m` (global (indt «nat»)) c3 \ - match c2 - (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) - [c3, - fun `p` (global (indt «nat»)) c4 \ - app [global (indc «S»), app [c1, c4, c3]]], c0, - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] - _uvk_53_ = c0 \ -global (indt «nat») - _uvk_54_ = global (indt «nat») - _uvk_55_ = c0 \ -global (indt «nat») - _uvk_56_ = c0 \ c1 \ -global (indt «nat») - _uvk_57_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_58_ = c0 \ c1 \ -global (indt «nat») - _uvk_59_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_60_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_61_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») -COQC tests/test_eqType_ast.v Query assignments: - X = typ «elpi.tests.test_API.4» - Y = typ «elpi.tests.test_API.5» + DECL = parameter T X0 (sort (typ «prim_eq_class.u0»)) c0 \ + record prim_eq_class (sort (typ «prim_eq_class.u1»)) mk_prim_eq_class + (field [canonical ff, coercion reversible] prim_eq_f + (global (indt «bool»)) c1 \ + field X1 prim_eq_proof + (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ + end-record) + GR = «prim_eq_class» + _uvk_3_ = «prim_eq_class.u0» +COQC tests/test_libobject_B.v + _uvk_4_ = «prim_eq_class.u1» Universe constraints: UNIVERSES: - {elpi.tests.test_API.5 elpi.tests.test_API.4} |= - elpi.tests.test_API.4 <= elpi.tests.test_API.5 + ALGEBRAIC UNIVERSES: - {} + {prim_eq_class.u1 prim_eq_class.u0} UNDEFINED UNIVERSES: - + prim_eq_class.u1 + prim_eq_class.u0 SORTS: WEAK CONSTRAINTS: -COQC tests/test_glob.v +fun r : prim_eq_class nat => +eq_refl : r = {| prim_eq_f := r; prim_eq_proof := prim_eq_proof _ r |} + : forall r : prim_eq_class nat, + r = {| prim_eq_f := r; prim_eq_proof := prim_eq_proof _ r |} +(* {} |= prim_eq_class.u1 <= eq.u0 *) +test1 +str hello +str x +test1 +too many arguments +File "./tests/test_vernacular2.v", line 6, characters 2-17: +Warning: This command does not support this attribute: fwd_compat_attr. +[unsupported-attributes,parsing,default] +File "./tests/test_vernacular2.v", line 7, characters 2-17: +Warning: This command does not support this attribute: fwd_compat_attr. +[unsupported-attributes,parsing,default] +File "./tests/test_vernacular2.v", line 8, characters 2-17: +Warning: This command does not support this attribute: fwd_compat_attr. +[unsupported-attributes,parsing,default] Query assignments: - D = parameter A X0 (sort (typ «tx.u0»)) c0 \ - inductive tx X1 - (parameter y X2 (global (indt «nat»)) c1 \ - arity (prod `_` (global (indt «bool»)) c2 \ sort (typ «tx.u1»))) c1 \ - [constructor K1x - (parameter y X3 (global (indt «nat»)) c2 \ - arity - (prod `x` c0 c3 \ - prod `n` (global (indt «nat»)) c4 \ - prod `p` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c4], c2]) c5 \ - prod `e` (app [c1, c4, global (indc «true»)]) c6 \ - app [c1, c2, global (indc «true»)])), - constructor K2x - (parameter y X4 (global (indt «nat»)) c2 \ - arity (app [c1, c2, global (indc «false»)]))] - _uvk_8_ = «tx.u0» - _uvk_9_ = «tx.u1» + S = sort (typ «elpi.tests.test_elaborator.50») + T = sort (typ «elpi.tests.test_elaborator.49») + TW = sort (typ «elpi.tests.test_elaborator.49») + W = sort (typ «elpi.tests.test_elaborator.51») + _uvk_131_ = «elpi.tests.test_elaborator.49» + _uvk_132_ = «elpi.tests.test_elaborator.51» Universe constraints: UNIVERSES: - {elpi.tests.test_API_env.18 elpi.tests.test_API_env.17 - elpi.tests.test_API_env.16 elpi.tests.test_API_env.15 - elpi.tests.test_API_env.14 elpi.tests.test_API_env.13 - elpi.tests.test_API_env.11} |= - tx.u0 < elpi.tests.test_API_env.11 - tx.u1 < elpi.tests.test_API_env.13 - Set <= eq.u0 - Set <= elpi.tests.test_API_env.13 - Set <= elpi.tests.test_API_env.14 - Set <= elpi.tests.test_API_env.15 - Set <= elpi.tests.test_API_env.16 - Set <= elpi.tests.test_API_env.17 - Set <= elpi.tests.test_API_env.18 - tx.u0 <= elpi.tests.test_API_env.14 - tx.u1 <= elpi.tests.test_API_env.14 - elpi.tests.test_API_env.14 <= tx.u1 + {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.50 + elpi.tests.test_elaborator.49} |= + elpi.tests.test_elaborator.49 < elpi.tests.test_elaborator.50 + elpi.tests.test_elaborator.51 < elpi.tests.test_elaborator.49 ALGEBRAIC UNIVERSES: - {tx.u1 tx.u0} + {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.49} UNDEFINED UNIVERSES: - tx.u1 - tx.u0 + elpi.tests.test_elaborator.51 + elpi.tests.test_elaborator.49 SORTS: - α2 := Type - α3 := Type - α4 := Type - α5 := Type + WEAK CONSTRAINTS: -COQC tests/test_link_perf.v Query assignments: - P = const «eq_op» - W = indt «nat» + L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), + cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.IA» +i + : Type +it = elpi_subproof + : True +it : True + +it is not universe polymorphic +it is transparent +Expands to: Constant elpi.tests.test_ltac.it +elpi_subproof = I + : True +elpi_subproof : True + +elpi_subproof is not universe polymorphic +elpi_subproof is opaque +Expands to: Constant elpi.tests.test_ltac.elpi_subproof +Closed under the global context +COQC tests/test_link_order9.v +COQC tests/test_param2.v +COQC tests/test_link_order_import1.v +COQC tests/test_link_order_import2.v ----<<---- enter: coq.say raw: (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.128»))) c0 \ @@ -5160,27 +4593,6 @@ (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.136»] tt [] tt) (get-option coq:udecl-cumul (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.136»] tt [] tt)) -Query assignments: - R = fun `x` (global (indt «nat»)) c0 \ - app [global (const «Nat.add»), c0, global (indc «O»)] - T = prod `x` (global (indt «nat»)) c0 \ global (indt «nat») - _uvk_109_ = X0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.46 elpi.tests.test_elaborator.45 - elpi.tests.test_elaborator.44 elpi.tests.test_elaborator.43} |= - elpi.tests.test_elaborator.43 <= elpi.tests.test_elaborator.45 - elpi.tests.test_elaborator.44 <= elpi.tests.test_elaborator.45 - elpi.tests.test_elaborator.45 <= elpi.tests.test_elaborator.46 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - ----<<---- enter: get-option coq:udecl-cumul (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.136»] tt [] tt) => @@ -5203,120 +4615,249 @@ X4 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X4 +global (indt «nat») Query assignments: - C = «Nat.add» - F = TODO - T = app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] -Query assignments: - X = typ «elpi.tests.test_API.6» - Y = typ «elpi.tests.test_API.7» - Z = typ «elpi.tests.test_API.8» + T = global (indt «nat») + _uvk_5_ = global (indt «nat») + _uvk_6_ = global (indt «nat») Universe constraints: UNIVERSES: - {elpi.tests.test_API.8 elpi.tests.test_API.7 elpi.tests.test_API.6} |= - elpi.tests.test_API.6 <= elpi.tests.test_API.8 - elpi.tests.test_API.7 <= elpi.tests.test_API.8 + {elpi.tests.test_API_typecheck.9 elpi.tests.test_API_typecheck.8 + elpi.tests.test_API_typecheck.7 elpi.tests.test_API_typecheck.6 + elpi.tests.test_API_typecheck.5} |= + Set < elpi.tests.test_API_typecheck.7 + elpi.tests.test_API_typecheck.8 < elpi.tests.test_API_typecheck.6 + elpi.tests.test_API_typecheck.9 < elpi.tests.test_API_typecheck.5 + Set <= elpi.tests.test_API_typecheck.8 + Set <= elpi.tests.test_API_typecheck.9 + elpi.tests.test_API_typecheck.8 <= list.u0 + elpi.tests.test_API_typecheck.9 <= list.u0 ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: SORTS: - + α3 := Type + α4 := Type + α5 := Type WEAK CONSTRAINTS: +fun `r` (app [global (indt «prim_eq_class»), global (indt «nat»)]) c0 \ + app [primitive (proj elpi.tests.test_API_env.prim_eq_f 1), c0] + evar (X0) (global (indt «nat»)) X1 /* suspended on X0, X1 */ +X0 global (indt «nat») + evar (X2) (global (indt «nat»)) X3 /* suspended on X2, X3 */ +hello +eq_refl : one = 1 + : one = 1 +File "./tests/test_vernacular2.v", line 9, characters 2-17: +Warning: This command does not support this attribute: fwd_compat_attr. +[unsupported-attributes,parsing,default] +File "./tests/test_vernacular2.v", line 10, characters 2-17: +Warning: This command does not support this attribute: fwd_compat_attr. +[unsupported-attributes,parsing,default] +---------------------------------- + {c0 c1} : decl c1 `a` (global (indt «bool»)) + ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ + {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ +EVARS: + ?X11==[a |- ?elpi_evar] (internal placeholder) {?elpi_evar0} + ?X10==[ |- Type] (internal placeholder) {?elpi_evar} + ?X9==[a |- => ?elpi_evar0] (internal placeholder) + ?X8==[a |- => ?elpi_evar] (internal placeholder) + +SHELF: +FUTURE GOALS STACK:?X11 +?X10 + +Coq-Elpi mapping: +RAW: +?X10 <-> X0 +?X11 <-> X2 +ELAB: +?X10 <-> X1 +?X11 <-> X2 + +X2 c0 : X1 Query assignments: -Query assignments: - C1 = const «C1» - GR1 = const «c12» - GR2 = const «c1t» - GR3 = const «c1f» - D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ - parameter a explicit c0 c1 \ - inductive ind1 tt - (parameter B explicit (sort (typ «ind1.u0»)) c2 \ - parameter b explicit c2 c3 \ - arity - (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ - prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.26»))) c2 \ - [constructor k1 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - arity - (prod `bb` (app [global (indt «prod»), c3, c3]) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c5, - global (indt «bool»), global (indc «true»)]) c6 \ - app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), - constructor k2 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - arity - (app - [c2, c3, c4, global (indt «nat»), - app [global (indc «S»), global (indc «O»)]]))] - D1 = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ - parameter a explicit c0 c1 \ - inductive ind1 tt - (parameter B explicit (sort (typ «ind1.u0»)) c2 \ - parameter b explicit c2 c3 \ - arity - (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ - prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.26»))) c2 \ - [constructor k1 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - arity - (prod `bb` (app [global (indt «prod»), c3, c3]) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c5, - global (indt «bool»), global (indc «true»)]) c6 \ - app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), - constructor k2 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - arity - (app - [c2, c3, c4, global (indt «nat»), - app [global (indc «S»), global (indc «O»)]]))] - I = «ind1» - U = «elpi.tests.test_API_env.26» - UA = «elpi.tests.test_API_env.20» - UB1 = «ind1.u0» - UB2 = «ind1.u0» - UB3 = «ind1.u0» - UC = «elpi.tests.test_API_env.22» + TY = X1 + X = c0 \ c1 \ +X2 c0 +Syntactic constraints: + {c0 c1} : decl c1 `a` (global (indt «bool»)) + ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ + {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ Universe constraints: UNIVERSES: - {elpi.tests.test_API_env.26} |= - Set <= elpi.tests.test_API_env.26 - ind1.u0 <= elpi.tests.test_API_env.26 + {elpi.tests.test_HOAS.10} |= ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: SORTS: + α5 +WEAK CONSTRAINTS: + + +Query assignments: + I = «eq» + P1 = «carrier» + P2 = «eq_op» +Query assignments: + GR = «Nat.add» + MP = «Coq.Init.Datatypes» +COQC tests/test_invert.v +Debug: Cannot enforce elpi.tests.test_elaborator.52 < +elpi.tests.test_elaborator.52 because elpi.tests.test_elaborator.52 += elpi.tests.test_elaborator.52 +Query assignments: + X = sort (typ X0) + _uvk_133_ = X0 +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.TA» +Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End +nth_R = +fun (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0) (x2 : T1 x0 x1) +=> +let + fix rec (n : nat) (l : list T) {struct n} : T := + match l with + | nil => x0 + | (x :: xs)%list => match n with + | 0 => x + | S m => rec m xs + end + end in +let + fix rec0 (n : nat) (l : list T0) {struct n} : T0 := + match l with + | nil => x1 + | (x :: xs)%list => match n with + | 0 => x + | S m => rec0 m xs + end + end in +fix rec1 (n n0 : nat) (n1 : nat_R n n0) {struct n1} : + forall (l : list T) (l0 : list T0), + list_R T T0 T1 l l0 -> T1 (rec n l) (rec0 n0 l0) := + match + n1 in (nat_R s1 s2) + return + (forall (l : list T) (l0 : list T0), + list_R T T0 T1 l l0 -> T1 (rec s1 l) (rec0 s2 l0)) + with + | O_R => + let K := O_R in + (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) + (l0 : list T0) (l1 : list_R T T0 T1 l l0) => + match + l1 in (list_R _ _ _ l2 l3) + return + (T1 + match l2 with + | nil => x0 + | (x :: xs)%list => + match n2 with + | 0 => x + | S m => rec m xs + end + end + match l3 with + | nil => x1 + | (x :: xs)%list => + match n3 with + | 0 => x + | S m => rec0 m xs + end + end) + with + | nil_R _ _ _ => x2 + | cons_R _ _ _ x x3 x4 xs xs0 xs1 => + match + n4 in (nat_R n5 n6) + return + (T1 match n5 with + | 0 => x + | S m => rec m xs + end match n6 with + | 0 => x3 + | S m => rec0 m xs0 + end) + with + | O_R => x4 + | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 + end + end) 0 0 K + | S_R x x3 x4 => + let K := S_R x x3 x4 in + (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) + (l0 : list T0) (l1 : list_R T T0 T1 l l0) => + match + l1 in (list_R _ _ _ l2 l3) + return + (T1 + match l2 with + | nil => x0 + | (x5 :: xs)%list => + match n2 with + | 0 => x5 + | S m => rec m xs + end + end + match l3 with + | nil => x1 + | (x5 :: xs)%list => + match n3 with + | 0 => x5 + | S m => rec0 m xs + end + end) + with + | nil_R _ _ _ => x2 + | cons_R _ _ _ x5 x6 x7 xs xs0 xs1 => + match + n4 in (nat_R n5 n6) + return + (T1 match n5 with + | 0 => x5 + | S m => rec m xs + end match n6 with + | 0 => x6 + | S m => rec0 m xs0 + end) + with + | O_R => x7 + | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 + end + end) (S x) (S x3) K + end + : forall (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0), + T1 x0 x1 -> + forall n n0 : nat, + nat_R n n0 -> + forall (l : list T) (l0 : list T0), + list_R T T0 T1 l l0 -> T1 (nth T x0 n l) (nth T0 x1 n0 l0) + +Arguments nth_R (T T)%type_scope T%function_scope + x0 x0 x0 (n n)%nat_scope n (l l)%list_scope l +COQC tests/test_libobject_C.v +«elpi.tests.test_API_typecheck.10» +Query assignments: + U = «elpi.tests.test_API_typecheck.10» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_typecheck.10} |= + Set <= elpi.tests.test_API_typecheck.10 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API_typecheck.10} +UNDEFINED UNIVERSES: + elpi.tests.test_API_typecheck.10 +SORTS: WEAK CONSTRAINTS: -fun x : C1 => x : C2 - : C1 -> C2 -fun (x : C1) (_ : x) => true - : forall x : C1, x -> bool -fun x : C1 => x 3 - : C1 -> nat Query assignments: GR = indt «X3» Universe constraints: @@ -5331,76 +4872,147 @@ WEAK CONSTRAINTS: -sort (typ X0) Query assignments: - _uvk_129_ = X0 -[(c4 \ app [c1, c2]), (c4 \ app [c0, c2]), (c4 \ c4), (c4 \ - prod `x0` (app [c0, c2]) c5 \ - prod `x1` (global (indt «nat»)) c6 \ - sort (typ «elpi.tests.test_tactic.16»))] -[app - [global (indt «eq»), global (indt «nat»), c2, - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]], - sort prop] + GR = const «myc1» +eq_op myc1 t1 t1 + : bool +test_inv : Type -> bool -> Type + : Type -> bool -> Type +K1_inv : forall (A : Type) (b : bool), b = true -> test_inv A b + : forall (A : Type) (b : bool), b = true -> test_inv A b +K2_inv +: +forall (A : Type) (b x : bool), +A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b + : forall (A : Type) (b x : bool), + A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b +Inductive listR_inv (A : Type) (PA : A -> Type) (idx0 : list A) : Type := + nilR_inv : idx0 = nil -> listR_inv A PA idx0 + | consR_inv : forall a : A, + PA a -> + forall xs : list A, + listR_inv A PA xs -> + idx0 = (a :: xs)%list -> listR_inv A PA idx0. + +Arguments listR_inv A%type_scope PA%function_scope idx0%list_scope +Arguments nilR_inv A%type_scope PA%function_scope idx0%list_scope _ +Arguments consR_inv A%type_scope PA%function_scope + idx0%list_scope a _ xs%list_scope _ _ Query assignments: - X = typ «elpi.tests.test_API.9» - Y = typ «elpi.tests.test_API.10» + C = «pc» +COQC tests/test_idx2inv.v +COQC tests/test_lens.v +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular2.v", line 11, column 24, character 361:), + attribute fwd_compat_attr (leaf-str )] +Query assignments: + A = «elpi.tests.test_API.succ» + GR = «Nat.add» + MP = «Coq.Init.Datatypes» + X1 = [loc-gref (const «Nat.add»)] + X2 = [loc-gref (const «Nat.add»)] + X3 = [loc-abbreviation «elpi.tests.test_API.succ»] + X4 = [loc-modpath «Coq.Init.Datatypes»] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular2.v", line 12, column 0, character 366:), + attribute fwd_compat_attr (leaf-str )] +Query q X0 +File "./tests/test_HOAS.v", line 123, characters 0-34: +Warning: Use of “Require” inside a module is fragile. It is not recommended +to use this functionality in finished proof scripts. +[require-in-module,fragile,default] +Raw term: +app + [global (const «add»), primitive (uint63 2000000003333002), + primitive (uint63 1)] +Nice term: add 2000000003333002 1 +Red: +2000000003333003 +File "./tests/test_HOAS.v", line 127, characters 0-34: +Warning: Use of “Require” inside a module is fragile. It is not recommended +to use this functionality in finished proof scripts. +[require-in-module,fragile,default] +Raw term: +app + [global (const «add»), primitive (float64 24000000000000), + primitive (float64 1)] +Nice term: 24000000000000 + 1 +Red: 24000000000001 +Query r X0 +Result r 1 +Query assignments: + F = «elpi.tests.test_API_module.R.F» + FT = «elpi.tests.test_API_module.R.FT» + L = [submodule «elpi.tests.test_API_module.R.S» [gref (const «R.S.x»)], + module-type «elpi.tests.test_API_module.R.P1», + module-type «elpi.tests.test_API_module.R.P2», + «elpi.tests.test_API_module.R.F» module-functor + [«elpi.tests.test_API_module.R.P1», «elpi.tests.test_API_module.R.P2»], + «elpi.tests.test_API_module.R.FT» module-type-functor + [«elpi.tests.test_API_module.R.P2», «elpi.tests.test_API_module.R.P1»], + gref (const «R.a»)] + P1 = «elpi.tests.test_API_module.R.P1» + P2 = «elpi.tests.test_API_module.R.P2» + R = «elpi.tests.test_API_module.R» + S = «elpi.tests.test_API_module.R.S» +COQC tests/test_link_order_import3.v +global (indc «O») +COQC tests/test_tag.v +app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +COQC tests/test_eqType_ast.v +COQC examples/usage.v +COQC examples/readme.v +Query assignments: + X = sort (typ «elpi.tests.test_elaborator.53») + Y = sort (typ «elpi.tests.test_elaborator.54») Universe constraints: UNIVERSES: - {elpi.tests.test_API.10 elpi.tests.test_API.9} |= - elpi.tests.test_API.9 < elpi.tests.test_API.10 + {elpi.tests.test_elaborator.54 elpi.tests.test_elaborator.53} |= + elpi.tests.test_elaborator.53 < elpi.tests.test_elaborator.54 ALGEBRAIC UNIVERSES: - {} + {elpi.tests.test_elaborator.54 elpi.tests.test_elaborator.53} UNDEFINED UNIVERSES: - + elpi.tests.test_elaborator.54 + elpi.tests.test_elaborator.53 SORTS: WEAK CONSTRAINTS: -elpi.tests.test_HOAS.P.p1 1 global (const «P.x») -@P.p1 -X0 global (const «P.x») -P.p1 P.x -some - (fun `A` (sort (typ «P.foo.u0»)) c0 \ - fun `f` (app [global (indt «P.foo»), c0]) c1 \ - app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) -elpi.tests.test_HOAS.P.p2 2 global (const «P.x») -@P.p2 -X0 global (const «P.x») -P.p2 P.x -some - (fun `A` (sort (typ «P.foo.u0»)) c0 \ - fun `f` (app [global (indt «P.foo»), c0]) c1 \ - app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) -d1 - : nat -d2 - : nat -i1 - : Prop -i2 - : Prop -k1 - : i1 -k2 - : i2 -r1 - : Set -r2 - : Type -f1 - : r1 -> nat -f2 - : r2 -> nat +pred_R = +fun (n n0 : nat) (n1 : nat_R n n0) => +match + n1 in (nat_R n2 n3) + return + (nat_R match n2 with + | 0 => n + | S u => u + end match n3 with + | 0 => n0 + | S u => u + end) +with +| O_R => n1 +| S_R _ _ u1 => u1 +end + : forall n n0 : nat, nat_R n n0 -> nat_R (Nat.pred n) (Nat.pred n0) + +Arguments pred_R (n n)%nat_scope n +pred_R : nat2nat_R Nat.pred Nat.pred + : nat2nat_R Nat.pred Nat.pred +predn_R : nat2nat_R predn predn + : nat2nat_R predn predn +add_R : nat2nat2nat_R Nat.add Nat.add + : nat2nat2nat_R Nat.add Nat.add +File "./tests/test_param2.v", line 85, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] Query assignments: - L = [coercion (const «c1t») 0 (const «C1») sortclass, - coercion (const «c1f») 0 (const «C1») funclass, - coercion (const «c12») 0 (const «C1») (grefclass (const «C2»)), - coercion (const «reverse_coercion») 3 (const «ReverseCoercionSource») - (grefclass (const «ReverseCoercionTarget»))] -COQC tests/test_link_order1.v + P = const «eq_op» +COQC tests/test_projK.v Query assignments: GR = indt «X4» Universe constraints: @@ -5792,7 +5404,6 @@ (coq.elaborate-skeleton (fun `T` (sort (typ X8)) c0 \ fun `x` c0 c1 \ c1) (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ prod `x` c0 c1 \ X7 c0 c1) X9) illtyped definition -Query assignments: ---->>---- exit: get-option coq:keepunivs tt => std.assert-ok! @@ -5804,31 +5415,6 @@ (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ fun `x` c0 c1 \ c1)) illtyped definition ----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X10 - D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ - parameter a explicit c0 c1 \ - inductive ind1 tt - (parameter B explicit (sort (typ «ind1.u0»)) c2 \ - parameter b explicit c2 c3 \ - arity - (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ - prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.27»))) c2 \ - [constructor k1 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - parameter bb implicit (app [global (indt «prod»), c3, c3]) c5 \ - arity - (prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c5, - global (indt «bool»), global (indc «true»)]) c6 \ - app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), - constructor k2 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - arity - (app - [c2, c3, c4, global (indt «nat»), - app [global (indc «S»), global (indc «O»)]]))] ---->>---- exit: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) (get-option coq:udecl (upoly-decl [] tt [] tt)) @@ -5839,52 +5425,6 @@ fun `x` c0 c1 \ c1) (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ prod `x` c0 c1 \ c0) X11 X12 - D1 = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ - parameter a explicit c0 c1 \ - inductive ind1 tt - (parameter B explicit (sort (typ «ind1.u0»)) c2 \ - parameter b explicit c2 c3 \ - arity - (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ - prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.27»))) c2 \ - [constructor k1 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - parameter bb implicit (app [global (indt «prod»), c3, c3]) c5 \ - arity - (prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c5, - global (indt «bool»), global (indc «true»)]) c6 \ - app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), - constructor k2 - (parameter B explicit (sort (typ «ind1.u0»)) c3 \ - parameter b explicit c3 c4 \ - arity - (app - [c2, c3, c4, global (indt «nat»), - app [global (indc «S»), global (indc «O»)]]))] - I = «ind1» - U = «elpi.tests.test_API_env.27» - UA = «elpi.tests.test_API_env.20» - UB1 = «ind1.u0» - UB2 = «ind1.u0» - UB3 = «ind1.u0» - UC = «elpi.tests.test_API_env.22» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_env.27} |= - Set <= elpi.tests.test_API_env.27 - ind1.u0 <= elpi.tests.test_API_env.27 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - ---->>---- exit: get-option coq:udecl (upoly-decl [] tt [] tt) => coq.env.add-const f3 @@ -5892,6 +5432,11 @@ fun `x` c0 c1 \ c1) (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ prod `x` c0 c1 \ c0) X11 «f3» +Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set +<= Prop). +Query assignments: + E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set +<= Prop). f3@{u} : forall T : Type@{u}, T -> T (* u |= *) @@ -5919,6 +5464,12 @@ (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.184»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.184»)) c1 \ prod `x` c0 (X2 c0 c1)) X3 X4) illtyped arity +is_list_to_is_list_inv +: +forall (A : Type) (PA : A -> Type) (l : list A), +is_list A PA l -> is_list_inv A PA l + : forall (A : Type) (PA : A -> Type) (l : list A), + is_list A PA l -> is_list_inv A PA l ---->>---- exit: get-option coq:keepunivs tt => std.assert-ok! @@ -6151,6 +5702,8 @@ coq.env.add-const f7 (pglobal (const «f6») «Set») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) X2 «f7» +COQC tests/test_derive.v +COQC tests/test_eq.v ----<<---- enter: coq.arity->term (arity X0) X1 ---->>---- exit: coq.arity->term (arity X1) X1 ----<<---- enter: @@ -6362,93 +5915,119 @@ (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ prod `x` c0 c2 \ c0) X7 «f8''» +COQC tests/test_isK.v +Universe constraints: Query assignments: - S = sort (typ «elpi.tests.test_elaborator.48») - T = sort (typ «elpi.tests.test_elaborator.47») - _uvk_130_ = «elpi.tests.test_elaborator.47» + C = «Nat.add» + F = TODO + T = app + [fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]], + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = app + [fix `plus` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]], + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + _uvk_35_ = global (indt «nat») + _uvk_36_ = c0 \ +global (indt «nat») + _uvk_37_ = c0 \ c1 \ +global (indt «nat») + _uvk_38_ = c0 \ +global (indt «nat») + _uvk_39_ = c0 \ c1 \ +global (indt «nat») + _uvk_40_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_41_ = c0 \ c1 \ c2 \ +global (indt «nat») Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.48 elpi.tests.test_elaborator.47} |= - elpi.tests.test_elaborator.47 < elpi.tests.test_elaborator.48 + ALGEBRAIC UNIVERSES: - {elpi.tests.test_elaborator.47} + {myind.u0} UNDEFINED UNIVERSES: - elpi.tests.test_elaborator.47 + myind.u0 SORTS: WEAK CONSTRAINTS: -COQC examples/usage.v -1356 - : nat -this 3 app [c4, X0 c0 c1 c2 c3 c4] -app [c3, app [c1, c2], global (const «a»)] foo.bar +myind true false : Prop + : Prop +K2 true : myind true true + : myind true true +myind1 true false : Prop + : Prop +K21 true : myind1 true true + : myind1 true true +COQC tests/test_param1.v Query assignments: - Spilled_1 = const «nuc» -nuc : forall x : nat, C1 -> C3 x - -nuc is not universe polymorphic -Arguments nuc x%nat_scope _ -nuc is a reversible coercion -Expands to: Constant elpi.tests.test_API_TC_CS.nuc -COQC tests/test_link_order2.v + W = const «W» +COQC tests/test_map.v Query assignments: - D = parameter P explicit (sort (typ «r1.u0»)) c0 \ - parameter p explicit c0 c1 \ - record r1 (sort (typ «r1.u0»)) mk_r1 - (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ - field [coercion off, canonical ff] f2 - (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) - D1 = parameter P explicit (sort (typ «r1.u0»)) c0 \ - parameter p explicit c0 c1 \ - record r1 (sort (typ «r1.u0»)) mk_r1 - (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ - field [coercion off, canonical ff] f2 - (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) - I = «r1» - UP = «r1.u0» - UR = «r1.u0» -Finished transaction in 1.615 secs (1.57u,0.003s) (successful) + D = X0 + R = app + [global (indc «ex_intro»), X0, + fun `hd_beta_auto` X0 c0 \ + app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + global (indc «O»)], X1, global (const «p»)] + TY = app + [global (indt «ex»), X0, + fun `hd_beta_auto` X0 c0 \ + app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + global (indc «O»)]] + _uvk_135_ = X2 + _uvk_136_ = X3 + _uvk_137_ = X4 +Syntactic constraints: + evar (X2) (sort (typ «ex.u0»)) X0 /* suspended on X2, X0 */ + evar (X4) X0 (X1) /* suspended on X4, X1 */ + evar (X1) X0 X5 /* suspended on X1, X5 */ +[(c4 \ app [c1, c2]), (c4 \ app [c0, c2]), (c4 \ c4), (c4 \ + prod `x0` (app [c0, c2]) c5 \ + prod `x1` (global (indt «nat»)) c6 \ + sort (typ «elpi.tests.test_tactic.16»))] +[app + [global (indt «eq»), global (indt «nat»), c2, + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]], + sort prop] Query assignments: - S = sort (typ «elpi.tests.test_elaborator.50») - T = sort (typ «elpi.tests.test_elaborator.49») - TW = sort (typ «elpi.tests.test_elaborator.49») - W = sort (typ «elpi.tests.test_elaborator.51») - _uvk_131_ = «elpi.tests.test_elaborator.49» - _uvk_132_ = «elpi.tests.test_elaborator.51» + X = «elpi.tests.test_API.1» Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.50 - elpi.tests.test_elaborator.49} |= - elpi.tests.test_elaborator.49 < elpi.tests.test_elaborator.50 - elpi.tests.test_elaborator.51 < elpi.tests.test_elaborator.49 + {elpi.tests.test_API.1} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.49} + {} UNDEFINED UNIVERSES: - elpi.tests.test_elaborator.51 - elpi.tests.test_elaborator.49 + SORTS: WEAK CONSTRAINTS: -Query assignments: - D = parameter P explicit (sort (typ «r1.u0»)) c0 \ - parameter p explicit c0 c1 \ - record r1 (sort (typ «r1.u0»)) mk_r1 - (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ - field [coercion regular, canonical ff] f2 - (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) - D1 = parameter P explicit (sort (typ «r1.u0»)) c0 \ - parameter p explicit c0 c1 \ - record r1 (sort (typ «r1.u0»)) mk_r1 - (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ - field [coercion regular, canonical ff] f2 - (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) - I = «r1» - UP = «r1.u0» - UR = «r1.u0» const-decl D (some (fun `i` (global (indt «I»)) c0 \ @@ -6469,38 +6048,125 @@ (parameter i maximal (global (indt «I»)) c0 \ parameter H maximal (app [global (indt «L»), c0]) c1 \ parameter n explicit (global (indt «nat»)) c2 \ arity (sort prop)) -COQC tests/test_link_order3.v -{{ nat; S; }} -{{ nat; S; }} Query assignments: - GR = const «Nat.add» - L = {{ nat; S; }} - S = {{ nat; S; }} -[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] -[foo (indt «nat»), foo (indt «bool»)] -[] -[foo (indt «nat»)] -Debug: Cannot enforce elpi.tests.test_elaborator.52 < -elpi.tests.test_elaborator.52 because elpi.tests.test_elaborator.52 -= elpi.tests.test_elaborator.52 + C = «Nat.add» + F = TODO + T = app + [fun `n` (global (indt «nat»)) c0 \ + fun `m` (global (indt «nat»)) c1 \ + match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) + [c1, + fun `p` (global (indt «nat»)) c2 \ + app + [global (indc «S»), + app + [fix `add` 0 + (prod `n` (global (indt «nat»)) c3 \ + prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) + c3 \ + fun `n` (global (indt «nat»)) c4 \ + fun `m` (global (indt «nat»)) c5 \ + match c4 + (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) + [c5, + fun `p` (global (indt «nat»)) c6 \ + app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = app + [fun `n` (global (indt «nat»)) c0 \ + fun `m` (global (indt «nat»)) c1 \ + match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) + [c1, + fun `p` (global (indt «nat»)) c2 \ + app + [global (indc «S»), + app + [fix `plus` 0 + (prod `n` (global (indt «nat»)) c3 \ + prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) + c3 \ + fun `n` (global (indt «nat»)) c4 \ + fun `m` (global (indt «nat»)) c5 \ + match c4 + (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) + [c5, + fun `p` (global (indt «nat»)) c6 \ + app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + _uvk_42_ = global (indt «nat») + _uvk_43_ = c0 \ +global (indt «nat») + _uvk_44_ = c0 \ c1 \ +global (indt «nat») + _uvk_45_ = c0 \ c1 \ +global (indt «nat») + _uvk_46_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_47_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_48_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_49_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_50_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_51_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_52_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») +[cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] Query assignments: - X = sort (typ X0) - _uvk_133_ = X0 -some - (pglobal (const «toto») - «elpi.tests.test_HOAS.19 elpi.tests.test_HOAS.20») -prod `T1` (sort (typ «elpi.tests.test_HOAS.19»)) c0 \ - prod `T2` (sort (typ «elpi.tests.test_HOAS.20»)) c1 \ prod `x` c0 c2 \ c0 + L = [cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] + P = const «eq_op» + W = const «Z1» Query assignments: - Body = some - (pglobal (const «toto») - «elpi.tests.test_HOAS.19 elpi.tests.test_HOAS.20») - C = «titi» - Term = prod `T1` (sort (typ «elpi.tests.test_HOAS.19»)) c0 \ - prod `T2` (sort (typ «elpi.tests.test_HOAS.20»)) c1 \ prod `x` c0 c2 \ c0 + _uvk_6_ = «nuind.u0» + _uvk_7_ = «nuind.u1» Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= + +ALGEBRAIC UNIVERSES: + {nuind.u1 nuind.u0} +UNDEFINED UNIVERSES: + nuind.u1 + nuind.u0 +SORTS: + +WEAK CONSTRAINTS: + + +fun x : nuind nat 3 false => +match x in (nuind _ _ b) return (b = b) with +| k1 _ _ => eq_refl : true = true +| k2 _ _ x0 => (fun _ : nuind nat 1 false => eq_refl : false = false) x0 +end + : nuind nat 3 false -> false = false +_f1 : Lens fo_record fo_record peano peano + : Lens fo_record fo_record peano peano +_f2 : Lens fo_record fo_record unit unit + : Lens fo_record fo_record unit unit +@_f3 : forall A : Type, Lens (pa_record A) (pa_record A) peano peano + : forall A : Type, Lens (pa_record A) (pa_record A) peano peano +@_f4 : forall A : Type, Lens (pa_record A) (pa_record A) A A + : forall A : Type, Lens (pa_record A) (pa_record A) A A +@_pf3 : forall A : Type, Lens (pr_record A) (pr_record A) peano peano + : forall A : Type, Lens (pr_record A) (pr_record A) peano peano +@_pf4 : forall A : Type, Lens (pr_record A) (pr_record A) A A + : forall A : Type, Lens (pr_record A) (pr_record A) A A +ok +Query assignments: + X = typ «elpi.tests.test_API.2» + Y = typ «elpi.tests.test_API.3» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.3 elpi.tests.test_API.2} |= + elpi.tests.test_API.2 <= elpi.tests.test_API.3 ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: @@ -6510,8 +6176,153 @@ WEAK CONSTRAINTS: +COQC tests/test_lens_laws.v +1356 + : nat +Query assignments: + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, c0], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, c0]] + _uvk_164_ = X0 + _uvk_165_ = X1 +this 3 app [c4, X0 c0 c1 c2 c3 c4] +app [c3, app [c1, c2], global (const «a»)] foo.bar +Query assignments: + P = const «eq_op» + W = indt «nat» +empty_tag : tag empty + : tag empty +unit_tag : tag unit + : tag unit +peano_tag : tag peano + : tag peano +option_tag : forall A : Type, tag (option A) + : forall A : Type, tag (option A) +pair_tag : forall A B : Type, tag (pair A B) + : forall A B : Type, tag (pair A B) +seq_tag : forall A : Type, tag (seq A) + : forall A : Type, tag (seq A) +rose_tag : forall A : Type, tag (rose A) + : forall A : Type, tag (rose A) +nest_tag : forall A : Type, tag (nest A) + : forall A : Type, tag (nest A) +w_tag : forall A : Type, tag (w A) + : forall A : Type, tag (w A) +vect_tag : forall (A : Type) (i : peano), tag (vect A i) + : forall (A : Type) (i : peano), tag (vect A i) +dyn_tag : tag dyn + : tag dyn +beta_tag : forall A : Type, tag (beta A) + : forall A : Type, tag (beta A) +iota_tag : tag iota + : tag iota +large_tag : tag large + : tag large +prim_int_tag : tag prim_int + : tag prim_int +prim_float_tag : tag prim_float + : tag prim_float +pa_record_tag : forall A : Type, tag (pa_record A) + : forall A : Type, tag (pa_record A) +pr_record_tag : forall A : Type, tag (pr_record A) + : forall A : Type, tag (pr_record A) +ord_tag : forall p : peano, tag (ord p) + : forall p : peano, tag (ord p) +ord2_tag : forall p : peano, tag (ord2 p) + : forall p : peano, tag (ord2 p) +val_tag : tag val + : tag val +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + = false + : bool +peano.eqb_OK : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) + +peano.eqb_OK is not universe polymorphic +Arguments peano.eqb_OK x1 x2 +peano.eqb_OK is opaque +Expands to: Constant elpi.apps.derive.examples.readme.peano.eqb_OK +Query assignments: + C = «Nat.add» + F = TODO + T = match (app [global (indc «S»), global (indc «O»)]) + (fun `n` (global (indt «nat»)) c0 \ global (indt «nat»)) + [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], + fun `p` (global (indt «nat»)) c0 \ + app + [global (indc «S»), + app + [fix `add` 0 + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ + fun `n` (global (indt «nat»)) c2 \ + fun `m` (global (indt «nat»)) c3 \ + match c2 + (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) + [c3, + fun `p` (global (indt «nat»)) c4 \ + app [global (indc «S»), app [c1, c4, c3]]], c0, + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = match (app [global (indc «S»), global (indc «O»)]) + (fun `_` (global (indt «nat»)) c0 \ global (indt «nat»)) + [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], + fun `p` (global (indt «nat»)) c0 \ + app + [global (indc «S»), + app + [fix `plus` 0 + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ + fun `n` (global (indt «nat»)) c2 \ + fun `m` (global (indt «nat»)) c3 \ + match c2 + (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) + [c3, + fun `p` (global (indt «nat»)) c4 \ + app [global (indc «S»), app [c1, c4, c3]]], c0, + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] + _uvk_53_ = c0 \ +global (indt «nat») + _uvk_54_ = global (indt «nat») + _uvk_55_ = c0 \ +global (indt «nat») + _uvk_56_ = c0 \ c1 \ +global (indt «nat») + _uvk_57_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_58_ = c0 \ c1 \ +global (indt «nat») + _uvk_59_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_60_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_61_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») +Derivation param1 on const «Nat.add» +Derivation param1 on const «Nat.add» took 0.008249 +Derivation param2 on const «Nat.add» +Derivation param2 on const «Nat.add» took 0.008983 +Derivation eqb-alias on const «Nat.add» +Derivation eqb-alias on const «Nat.add» failed, continuing +Derivation eqbcorrect-alias on const «Nat.add» +Derivation eqbcorrect-alias on const «Nat.add» failed, continuing +Derivation eqbOK-alias on const «Nat.add» +Derivation eqbOK-alias on const «Nat.add» failed, continuing more : (forall A : Type, A -> tickle A -> tickle A) : forall A : Type, A -> tickle A -> tickle A +is_add + : forall n : nat, is_nat n -> forall m : nat, is_nat m -> is_nat (n + m) tickle.eqb : (forall A : Type, (A -> A -> bool) -> tickle A -> tickle A -> bool) : forall A : Type, (A -> A -> bool) -> tickle A -> tickle A -> bool @@ -6527,41 +6338,7 @@ tickle.tickle_R : (forall A B : Type, (A -> B -> Type) -> tickle A -> tickle B -> Type) : forall A B : Type, (A -> B -> Type) -> tickle A -> tickle B -> Type -[trm c0, trm (app [global (const «Nat.add»), c0, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ -[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -[trm c0, trm c1] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm (app [global (const «Nat.add»), c0, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ Starting module rtree -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ Declaring inductive parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.194»)) c0 \ @@ -6570,94 +6347,122 @@ [constructor Leaf (arity (prod `_` c0 c2 \ c1)), constructor Node (arity (prod `_` (app [global (indt «tickle.tickle»), c1]) c2 \ c1))] -[trm (app [global (indc «O»), global (indc «O»)])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +c0 global (indt «nat») +Query assignments: + T = global (indt «nat») Deriving Derivation map on indt «rtree» -[trm c0] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -Derivation map on indt «rtree» took 0.006611 +Derivation map on indt «rtree» took 0.006888 Derivation lens on indt «rtree» Derivation lens on indt «rtree» failed, continuing Derivation param1 on indt «rtree» -[int 1] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[int -1] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[str a] -Derivation param1 on indt «rtree» took 0.014342 +Query assignments: + X = typ «elpi.tests.test_API.4» + Y = typ «elpi.tests.test_API.5» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.5 elpi.tests.test_API.4} |= + elpi.tests.test_API.4 <= elpi.tests.test_API.5 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Derivation param1 on indt «rtree» took 0.015752 Derivation param2 on indt «rtree» - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[str a] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[str x] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -Derivation param2 on indt «rtree» took 0.016656 +COQC tests/test_fields.v +Derivation param2 on indt «rtree» took 0.018653 Derivation tag on indt «rtree» -[trm (app [global (const «Nat.add»), c0, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -Derivation tag on indt «rtree» took 0.003945 +Derivation tag on indt «rtree» took 0.003744 Derivation eqType_ast on indt «rtree» -Derivation eqType_ast on indt «rtree» took 0.001799 +Derivation eqType_ast on indt «rtree» took 0.002092 Derivation lens_laws on indt «rtree» -Derivation lens_laws on indt «rtree» took 0.001157 +Derivation lens_laws on indt «rtree» took 0.001489 Derivation param1_congr on indt «rtree» -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -Derivation param1_congr on indt «rtree» took 0.006114 +Derivation param1_congr on indt «rtree» took 0.006561 Derivation param1_inhab on indt «rtree» -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -Derivation param1_inhab on indt «rtree» took 0.005673 +Derivation param1_inhab on indt «rtree» took 0.006089 Derivation param1_functor on indt «rtree» -[trm c0] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -Derivation param1_functor on indt «rtree» took 0.006172 +Derivation param1_functor on indt «rtree» took 0.006289 Derivation fields on indt «rtree» -Derivation fields on indt «rtree» took 0.013426 +Derivation fields on indt «rtree» took 0.015173 Derivation param1_trivial on indt «rtree» -Derivation param1_trivial on indt «rtree» took 0.130113 +Query assignments: + C1 = const «C1» + GR1 = const «c12» + GR2 = const «c1t» + GR3 = const «c1f» +fun x : C1 => x : C2 + : C1 -> C2 +fun (x : C1) (_ : x) => true + : forall x : C1, x -> bool +fun x : C1 => x 3 + : C1 -> nat +Derivation param1_trivial on indt «rtree» took 0.108809 Derivation induction on indt «rtree» -Derivation induction on indt «rtree» took 0.004491 +Derivation induction on indt «rtree» took 0.002712 Derivation eqb on indt «rtree» -Derivation eqb on indt «rtree» took 0.015493 +empty_map : map empty + : map empty +unit_map : map unit + : map unit +peano_map : map peano + : map peano +option_map : map1 option + : map1 option +Derivation eqb on indt «rtree» took 0.009462 Derivation eqbcorrect on indt «rtree» -Derivation eqbcorrect on indt «rtree» took 0.041085 +pair_map +: +forall A B : Type, +(A -> B) -> forall C D : Type, (C -> D) -> pair A C -> pair B D + : forall A B : Type, + (A -> B) -> forall C D : Type, (C -> D) -> pair A C -> pair B D +seq_map : map1 seq + : map1 seq +rose_map : map1 rose + : map1 rose +vect_map +: +forall A B : Type, (A -> B) -> forall i : peano, vect A i -> vect B i + : forall A B : Type, (A -> B) -> forall i : peano, vect A i -> vect B i +dyn_map : map dyn + : map dyn +zeta_map : map1 zeta + : map1 zeta +iota_map : map iota + : map iota +large_map : map large + : map large +prim_int_map : map prim_int + : map prim_int +prim_float_map : map prim_float + : map prim_float +pa_record_map : map1 pa_record + : map1 pa_record +pr_record_map : map1 pr_record + : map1 pr_record +Derivation eqbcorrect on indt «rtree» took 0.025683 Derivation eqbOK on indt «rtree» -Derivation eqbOK on indt «rtree» took 0.003374 +Derivation eqbOK on indt «rtree» took 0.002212 Done -{{ X.a; }} {{ X.a; Nat.add; nat; }} -{{ X.a; }} {{ X.a; Nat.add; nat; O; S; }} Query assignments: - AllL = {{ X.a; Nat.add; nat; }} - AllS = {{ X.a; Nat.add; nat; O; S; }} - GR = const «X.b» - L = {{ X.a; }} - M = «elpi.tests.test_API_env.HOAS.X» - S = {{ X.a; }} - Spilled_1 = const «X.a» + C = «Nat.add» + F = TODO + T = app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] rtree.induction : (forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), (forall a : A, PA a -> P (Leaf A a)) -> @@ -6669,21 +6474,51 @@ (forall l : tickle (rtree A), tickle.is_tickle (rtree A) P l -> P (Node A l)) -> forall x : rtree A, rtree.is_rtree A PA x -> P x -pglobal (const «toto») X0 -pglobal (const «toto») «u1 u2» -toto Query assignments: - Spilled_1 = toto - _uvk_62_ = X0 - _uvk_63_ = «elpi.tests.test_HOAS.23 elpi.tests.test_HOAS.24» + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] + _uvk_174_ = X0 + _uvk_175_ = c0 \ +X1 c0 + _uvk_176_ = X2 + _uvk_177_ = X3 Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} |= + {elpi.tests.test_elaborator.58 elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.56 elpi.tests.test_elaborator.55} |= + Set <= elpi.tests.test_elaborator.55 + elpi.tests.test_elaborator.55 <= elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.56 <= elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.57 <= elpi.tests.test_elaborator.58 ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} + {} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.24 - elpi.tests.test_HOAS.23 + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + X = typ «elpi.tests.test_API.6» + Y = typ «elpi.tests.test_API.7» + Z = typ «elpi.tests.test_API.8» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.8 elpi.tests.test_API.7 elpi.tests.test_API.6} |= + elpi.tests.test_API.6 <= elpi.tests.test_API.8 + elpi.tests.test_API.7 <= elpi.tests.test_API.8 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + SORTS: WEAK CONSTRAINTS: @@ -6700,18 +6535,18 @@ Deriving Skipping derivation map on indt «Box» since the user did not select it Derivation lens on indt «Box» -Derivation lens on indt «Box» took 0.007703 +Derivation lens on indt «Box» took 0.005115 Skipping derivation param1 on indt «Box» since the user did not select it Skipping derivation param2 on indt «Box» since the user did not select it Derivation tag on indt «Box» File "./examples/usage.v", line 53, characters 0-84: Warning: Global name tag is taken, using tag1 instead [elpi.renamed,elpi,default] -Derivation tag on indt «Box» took 0.003423 +Derivation tag on indt «Box» took 0.002123 Derivation eqType_ast on indt «Box» -Derivation eqType_ast on indt «Box» took 0.001528 +Derivation eqType_ast on indt «Box» took 0.001015 Derivation lens_laws on indt «Box» -Derivation lens_laws on indt «Box» took 0.018310 +Derivation lens_laws on indt «Box» took 0.012492 Skipping derivation param1_congr on indt «Box» since the user did not select it Skipping derivation param1_inhab on indt «Box» @@ -6719,30 +6554,13 @@ Skipping derivation param1_functor on indt «Box» since the user did not select it Derivation fields on indt «Box» -Derivation fields on indt «Box» took 0.008951 +Derivation fields on indt «Box» took 0.006910 Skipping derivation param1_trivial on indt «Box» since the user did not select it Skipping derivation induction on indt «Box» since the user did not select it Derivation eqb on indt «Box» -Query assignments: - X = sort (typ «elpi.tests.test_elaborator.53») - Y = sort (typ «elpi.tests.test_elaborator.54») -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.54 elpi.tests.test_elaborator.53} |= - elpi.tests.test_elaborator.53 < elpi.tests.test_elaborator.54 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_elaborator.54 elpi.tests.test_elaborator.53} -UNDEFINED UNIVERSES: - elpi.tests.test_elaborator.54 - elpi.tests.test_elaborator.53 -SORTS: - -WEAK CONSTRAINTS: - - -Derivation eqb on indt «Box» took 0.009138 +Derivation eqb on indt «Box» took 0.005467 Skipping derivation eqbcorrect on indt «Box» since the user did not select it Skipping derivation eqbOK on indt «Box» since the user did not select it @@ -6766,71 +6584,968 @@ nat_eqb_OK : (forall x y : nat, reflect (x = y) (nat_eqb x y)) : forall x y : nat, reflect (x = y) (nat_eqb x y) Derivation map on indt «a» -Derivation map on indt «a» took 0.004094 +Derivation map on indt «a» took 0.002659 Derivation lens on indt «a» Derivation lens on indt «a» failed, continuing Derivation param1 on indt «a» -COQC tests/test_link_order4.v -Derivation param1 on indt «a» took 0.034671 +Derivation param1 on indt «a» took 0.019797 Derivation param2 on indt «a» -Derivation param2 on indt «a» took 0.008140 +Derivation param2 on indt «a» took 0.005604 Derivation tag on indt «a» -Derivation tag on indt «a» took 0.003205 +Query assignments: + D = parameter A X0 (sort (typ «tx.u0»)) c0 \ + inductive tx X1 + (parameter y X2 (global (indt «nat»)) c1 \ + arity (prod `_` (global (indt «bool»)) c2 \ sort (typ «tx.u1»))) c1 \ + [constructor K1x + (parameter y X3 (global (indt «nat»)) c2 \ + arity + (prod `x` c0 c3 \ + prod `n` (global (indt «nat»)) c4 \ + prod `p` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c4], c2]) c5 \ + prod `e` (app [c1, c4, global (indc «true»)]) c6 \ + app [c1, c2, global (indc «true»)])), + constructor K2x + (parameter y X4 (global (indt «nat»)) c2 \ + arity (app [c1, c2, global (indc «false»)]))] + _uvk_8_ = «tx.u0» + _uvk_9_ = «tx.u1» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_env.18 elpi.tests.test_API_env.17 + elpi.tests.test_API_env.16 elpi.tests.test_API_env.15 + elpi.tests.test_API_env.14 elpi.tests.test_API_env.13 + elpi.tests.test_API_env.11} |= + tx.u0 < elpi.tests.test_API_env.11 + tx.u1 < elpi.tests.test_API_env.13 + Set <= eq.u0 + Set <= elpi.tests.test_API_env.13 + Set <= elpi.tests.test_API_env.14 + Set <= elpi.tests.test_API_env.15 + Set <= elpi.tests.test_API_env.16 + Set <= elpi.tests.test_API_env.17 + Set <= elpi.tests.test_API_env.18 + tx.u0 <= elpi.tests.test_API_env.14 + tx.u1 <= elpi.tests.test_API_env.14 + elpi.tests.test_API_env.14 <= tx.u1 +ALGEBRAIC UNIVERSES: + {tx.u1 tx.u0} +UNDEFINED UNIVERSES: + tx.u1 + tx.u0 +SORTS: + α2 := Type + α3 := Type + α4 := Type + α5 := Type +WEAK CONSTRAINTS: + + +Derivation tag on indt «a» took 0.001833 Derivation eqType_ast on indt «a» -Derivation eqType_ast on indt «a» took 0.001354 +Derivation eqType_ast on indt «a» took 0.000893 Derivation lens_laws on indt «a» -Derivation lens_laws on indt «a» took 0.001315 +Derivation lens_laws on indt «a» took 0.000833 Derivation param1_congr on indt «a» -Derivation param1_congr on indt «a» took 0.001941 +Derivation param1_congr on indt «a» took 0.001150 Derivation param1_inhab on indt «a» -Derivation param1_inhab on indt «a» took 0.003575 +Derivation param1_inhab on indt «a» took 0.002190 Derivation param1_functor on indt «a» -Derivation param1_functor on indt «a» took 0.003656 +Derivation param1_functor on indt «a» took 0.002231 Derivation fields on indt «a» -Derivation fields on indt «a» took 0.006351 +Derivation fields on indt «a» took 0.005069 Derivation param1_trivial on indt «a» -Derivation param1_trivial on indt «a» took 0.005058 +Derivation param1_trivial on indt «a» took 0.002658 Derivation induction on indt «a» -Derivation induction on indt «a» took 0.002454 +Derivation induction on indt «a» took 0.001598 Derivation eqb on indt «a» -Derivation eqb on indt «a» took 0.005475 +Derivation eqb on indt «a» took 0.003726 Derivation eqbcorrect on indt «a» -Derivation eqbcorrect on indt «a» took 0.007903 +Derivation eqbcorrect on indt «a» took 0.005181 Derivation eqbOK on indt «a» -Derivation eqbOK on indt «a» took 0.002062 +Derivation eqbOK on indt «a» took 0.001418 Skipping derivation map on indt «b» since the user did not select it Skipping derivation lens on indt «b» since the user did not select it Derivation param1 on indt «b» -Derivation param1 on indt «b» took 0.007821 +Derivation param1 on indt «b» took 0.005468 Skipping derivation param2 on indt «b» since the user did not select it Derivation tag on indt «b» -Derivation tag on indt «b» took 0.002715 +Derivation tag on indt «b» took 0.001726 Derivation eqType_ast on indt «b» -Derivation eqType_ast on indt «b» took 0.001346 +Derivation eqType_ast on indt «b» took 0.000951 Skipping derivation lens_laws on indt «b» since the user did not select it Skipping derivation param1_congr on indt «b» since the user did not select it Derivation param1_inhab on indt «b» -Derivation param1_inhab on indt «b» took 0.003801 +Query assignments: + L = [coercion (const «c1t») 0 (const «C1») sortclass, + coercion (const «c1f») 0 (const «C1») funclass, + coercion (const «c12») 0 (const «C1») (grefclass (const «C2»)), + coercion (const «reverse_coercion») 3 (const «ReverseCoercionSource») + (grefclass (const «ReverseCoercionTarget»))] +Derivation param1_inhab on indt «b» took 0.003468 Derivation param1_functor on indt «b» -Derivation param1_functor on indt «b» took 0.003234 +Derivation param1_functor on indt «b» took 0.002313 Derivation fields on indt «b» -Derivation fields on indt «b» took 0.006761 +Derivation fields on indt «b» took 0.004644 Skipping derivation param1_trivial on indt «b» since the user did not select it Derivation induction on indt «b» -Derivation induction on indt «b» took 0.003256 +Derivation induction on indt «b» took 0.001759 Derivation eqb on indt «b» -Derivation eqb on indt «b» took 0.007181 +Derivation eqb on indt «b» took 0.004318 Derivation eqbcorrect on indt «b» -Derivation eqbcorrect on indt «b» took 0.010420 +Derivation eqbcorrect on indt «b» took 0.007562 +Query assignments: + X = typ «elpi.tests.test_API.9» + Y = typ «elpi.tests.test_API.10» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.10 elpi.tests.test_API.9} |= + elpi.tests.test_API.9 < elpi.tests.test_API.10 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + Derivation eqbOK on indt «b» -Derivation eqbOK on indt «b» took 0.002645 +Derivation eqbOK on indt «b» took 0.002223 a_eqb : a -> a -> bool b_eqb : b -> b -> bool -COQC examples/readme.v +Query assignments: + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] + _uvk_211_ = X0 + _uvk_212_ = c0 \ +X1 c0 + _uvk_213_ = X2 + _uvk_214_ = X3 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.62 elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.60 elpi.tests.test_elaborator.59} |= + Set <= elpi.tests.test_elaborator.59 + elpi.tests.test_elaborator.59 <= elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.60 <= elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.61 <= elpi.tests.test_elaborator.62 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +elpi.tests.test_HOAS.P.p1 1 global (const «P.x») +@P.p1 +X0 global (const «P.x») +P.p1 P.x +some + (fun `A` (sort (typ «P.foo.u0»)) c0 \ + fun `f` (app [global (indt «P.foo»), c0]) c1 \ + app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) +elpi.tests.test_HOAS.P.p2 2 global (const «P.x») +@P.p2 +X0 global (const «P.x») +P.p2 P.x +some + (fun `A` (sort (typ «P.foo.u0»)) c0 \ + fun `f` (app [global (indt «P.foo»), c0]) c1 \ + app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) +Query assignments: + Spilled_1 = const «nuc» +nuc : forall x : nat, C1 -> C3 x + +nuc is not universe polymorphic +Arguments nuc x%nat_scope _ +nuc is a reversible coercion +Expands to: Constant elpi.tests.test_API_TC_CS.nuc +[trm c0, trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ +[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +[trm c0, trm c1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +empty_eq : eq_test empty + : eq_test empty +unit_eq : eq_test unit + : eq_test unit +peano_eq : eq_test peano + : eq_test peano +option_eq : forall A : Type, eq_test A -> eq_test (option A) + : forall A : Type, eq_test A -> eq_test (option A) +pair_eq +: +forall A : Type, +eq_test A -> forall B : Type, eq_test B -> eq_test (pair A B) + : forall A : Type, + eq_test A -> forall B : Type, eq_test B -> eq_test (pair A B) +seq_eq : forall A : Type, eq_test A -> eq_test (seq A) + : forall A : Type, eq_test A -> eq_test (seq A) +[trm (app [global (indc «O»), global (indc «O»)])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +rose_eq : forall A : Type, eq_test A -> eq_test (rose A) + : forall A : Type, eq_test A -> eq_test (rose A) +vect_eq : forall A : Type, eq_test A -> forall i : peano, eq_test (vect A i) + : forall A : Type, eq_test A -> forall i : peano, eq_test (vect A i) +zeta_eq : forall A : Type, eq_test A -> eq_test (zeta A) + : forall A : Type, eq_test A -> eq_test (zeta A) +beta_eq : forall A : Type, eq_test A -> eq_test (beta A) + : forall A : Type, eq_test A -> eq_test (beta A) +[trm c0] +large_eq : eq_test large + : eq_test large + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +prim_int_eq : eq_test prim_int + : eq_test prim_int +prim_float_eq : eq_test prim_float + : eq_test prim_float +fo_record_eq : eq_test fo_record + : eq_test fo_record +pa_record_eq : forall A : Type, eq_test A -> eq_test (pa_record A) + : forall A : Type, eq_test A -> eq_test (pa_record A) +pr_record_eq : forall A : Type, eq_test A -> eq_test (pr_record A) + : forall A : Type, eq_test A -> eq_test (pr_record A) +enum_eq : eq_test enum + : eq_test enum +[int 1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[int -1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[str a] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[str a] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[str x] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +_f1_view_set : view_set _f1 + : view_set _f1 +_f2_view_set : view_set _f2 + : view_set _f2 +_f3_view_set : forall A : Type, view_set _f3 + : forall A : Type, view_set _f3 +[trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +_f4_view_set : forall A : Type, view_set _f4 + : forall A : Type, view_set _f4 +_pf3_view_set : forall A : Type, view_set _pf3 + : forall A : Type, view_set _pf3 +_pf4_view_set : forall A : Type, view_set _pf4 + : forall A : Type, view_set _pf4 +_f1_set_set : set_set _f1 + : set_set _f1 +_f2_set_set : set_set _f2 + : set_set _f2 +_f3_set_set : forall A : Type, set_set _f3 + : forall A : Type, set_set _f3 +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +_f4_set_set : forall A : Type, set_set _f4 + : forall A : Type, set_set _f4 +_pf3_set_set : forall A : Type, set_set _pf3 + : forall A : Type, set_set _pf3 +_pf4_set_set : forall A : Type, set_set _pf4 + : forall A : Type, set_set _pf4 +_f1_set_view : set_view _f1 + : set_view _f1 +_f2_set_view : set_view _f2 + : set_view _f2 +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] +_f3_set_view : forall A : Type, set_view _f3 + : forall A : Type, set_view _f3 + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +_f4_set_view : forall A : Type, set_view _f4 + : forall A : Type, set_view _f4 +_pf3_set_view : forall A : Type, set_view _pf3 + : forall A : Type, set_view _pf3 +_pf4_set_view : forall A : Type, set_view _pf4 + : forall A : Type, set_view _pf4 +_f1_f2_exchange : exchange _f1 _f2 + : exchange _f1 _f2 +_f2_f1_exchange : exchange _f2 _f1 + : exchange _f2 _f1 +[trm c0] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +_f3_f4_exchange : forall A : Type, exchange _f3 _f4 + : forall A : Type, exchange _f3 _f4 +_f4_f3_exchange : forall A : Type, exchange _f4 _f3 + : forall A : Type, exchange _f4 _f3 +_pf3_pf4_exchange : forall A : Type, exchange _pf3 _pf4 + : forall A : Type, exchange _pf3 _pf4 +_pf4_pf3_exchange : forall A : Type, exchange _pf4 _pf3 + : forall A : Type, exchange _pf4 _pf3 +Query assignments: + D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ + parameter a explicit c0 c1 \ + inductive ind1 tt + (parameter B explicit (sort (typ «ind1.u0»)) c2 \ + parameter b explicit c2 c3 \ + arity + (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ + prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.26»))) c2 \ + [constructor k1 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + arity + (prod `bb` (app [global (indt «prod»), c3, c3]) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c5, + global (indt «bool»), global (indc «true»)]) c6 \ + app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), + constructor k2 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + arity + (app + [c2, c3, c4, global (indt «nat»), + app [global (indc «S»), global (indc «O»)]]))] + D1 = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ + parameter a explicit c0 c1 \ + inductive ind1 tt + (parameter B explicit (sort (typ «ind1.u0»)) c2 \ + parameter b explicit c2 c3 \ + arity + (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ + prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.26»))) c2 \ + [constructor k1 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + arity + (prod `bb` (app [global (indt «prod»), c3, c3]) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c5, + global (indt «bool»), global (indc «true»)]) c6 \ + app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), + constructor k2 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + arity + (app + [c2, c3, c4, global (indt «nat»), + app [global (indc «S»), global (indc «O»)]]))] + I = «ind1» + U = «elpi.tests.test_API_env.26» + UA = «elpi.tests.test_API_env.20» + UB1 = «ind1.u0» + UB2 = «ind1.u0» + UB3 = «ind1.u0» + UC = «elpi.tests.test_API_env.22» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_env.26} |= + Set <= elpi.tests.test_API_env.26 + ind1.u0 <= elpi.tests.test_API_env.26 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + A = tt + B = 0 + C = 0 + D = sort (typ «Set») + E = [«true», «false»] + F = [global (indt «bool»), global (indt «bool»)] + GR = «bool» +unit_is_tt : unit -> bool + : unit -> bool +peano_is_Zero : peano -> bool + : peano -> bool +peano_is_Succ : peano -> bool + : peano -> bool +option_is_None : forall A : Type, option A -> bool + : forall A : Type, option A -> bool +option_is_Some : forall A : Type, option A -> bool + : forall A : Type, option A -> bool +pair_is_Comma : forall A B : Type, pair A B -> bool + : forall A B : Type, pair A B -> bool +seq_is_Nil : forall A : Type, seq A -> bool + : forall A : Type, seq A -> bool +seq_is_Cons : forall A : Type, seq A -> bool + : forall A : Type, seq A -> bool +rose_is_Leaf : forall A : Type, rose A -> bool + : forall A : Type, rose A -> bool +rose_is_Node : forall A : Type, rose A -> bool + : forall A : Type, rose A -> bool +nest_is_NilN : forall A : Type, nest A -> bool + : forall A : Type, nest A -> bool +nest_is_ConsN : forall A : Type, nest A -> bool + : forall A : Type, nest A -> bool +w_is_via : forall A : Type, w A -> bool + : forall A : Type, w A -> bool +vect_is_VNil : forall (A : Type) (i : peano), vect A i -> bool + : forall (A : Type) (i : peano), vect A i -> bool +vect_is_VCons : forall (A : Type) (i : peano), vect A i -> bool + : forall (A : Type) (i : peano), vect A i -> bool +dyn_is_box : dyn -> bool + : dyn -> bool +zeta_is_Envelope : forall A : Type, zeta A -> bool + : forall A : Type, zeta A -> bool +beta_is_Redex : forall A : Type, beta A -> bool + : forall A : Type, beta A -> bool +iota_is_Why : iota -> bool + : iota -> bool +large_is_K1 + : large -> bool +large_is_K2 + : large -> bool +prim_int_is_PI + : prim_int -> bool +prim_float_is_PF + : prim_float -> bool +fo_record_is_Build_fo_record : fo_record -> bool + : fo_record -> bool +pa_record_is_Build_pa_record : forall A : Type, pa_record A -> bool + : forall A : Type, pa_record A -> bool +pr_record_is_Build_pr_record : forall A : Type, pr_record A -> bool + : forall A : Type, pr_record A -> bool +enum_is_E1 : enum -> bool + : enum -> bool +Query assignments: + F = app [global (const «nat_of_bool»), global (indc «true»)] +[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] +[foo (indt «nat»), foo (indt «bool»)] +[] +[foo (indt «nat»)] +Query assignments: + D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ + parameter a explicit c0 c1 \ + inductive ind1 tt + (parameter B explicit (sort (typ «ind1.u0»)) c2 \ + parameter b explicit c2 c3 \ + arity + (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ + prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.27»))) c2 \ + [constructor k1 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + parameter bb implicit (app [global (indt «prod»), c3, c3]) c5 \ + arity + (prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c5, + global (indt «bool»), global (indc «true»)]) c6 \ + app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), + constructor k2 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + arity + (app + [c2, c3, c4, global (indt «nat»), + app [global (indc «S»), global (indc «O»)]]))] + D1 = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ + parameter a explicit c0 c1 \ + inductive ind1 tt + (parameter B explicit (sort (typ «ind1.u0»)) c2 \ + parameter b explicit c2 c3 \ + arity + (prod `C` (sort (typ «elpi.tests.test_API_env.22»)) c4 \ + prod `_` c4 c5 \ sort (typ «elpi.tests.test_API_env.27»))) c2 \ + [constructor k1 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + parameter bb implicit (app [global (indt «prod»), c3, c3]) c5 \ + arity + (prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c5, + global (indt «bool»), global (indc «true»)]) c6 \ + app [c2, c3, c4, global (indt «unit»), global (indc «tt»)])), + constructor k2 + (parameter B explicit (sort (typ «ind1.u0»)) c3 \ + parameter b explicit c3 c4 \ + arity + (app + [c2, c3, c4, global (indt «nat»), + app [global (indc «S»), global (indc «O»)]]))] + I = «ind1» + U = «elpi.tests.test_API_env.27» + UA = «elpi.tests.test_API_env.20» + UB1 = «ind1.u0» + UB2 = «ind1.u0» + UB3 = «ind1.u0» + UC = «elpi.tests.test_API_env.22» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_env.27} |= + Set <= elpi.tests.test_API_env.27 + ind1.u0 <= elpi.tests.test_API_env.27 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +c0 \ app [global (const «nat_of_bool»), c0] +Query assignments: + Res = app + [global (const «map»), global (indt «bool»), global (indt «nat»), + fun `x` (global (indt «bool»)) c0 \ + app [global (const «nat_of_bool»), c0], + app + [global (indc «cons»), global (indt «bool»), global (indc «true»), + app [global (indc «nil»), global (indt «bool»)]]] + _uvk_238_ = X0 + _uvk_239_ = X1 +is_empty : pred empty + : pred empty +is_unit : pred unit + : pred unit +is_peano : pred peano + : pred peano +is_option : forall A : Type, pred A -> pred (option A) + : forall A : Type, pred A -> pred (option A) +is_pair +: +forall A : Type, pred A -> forall B : Type, pred B -> pred (pair A B) + : forall A : Type, pred A -> forall B : Type, pred B -> pred (pair A B) +is_seq : forall A : Type, pred A -> pred (seq A) + : forall A : Type, pred A -> pred (seq A) +is_rose : forall A : Type, pred A -> pred (rose A) + : forall A : Type, pred A -> pred (rose A) +is_nest : forall A : Type, pred A -> pred (nest A) + : forall A : Type, pred A -> pred (nest A) +is_w : forall A : Type, pred A -> pred (w A) + : forall A : Type, pred A -> pred (w A) +is_vect +: +forall A : Type, pred A -> forall i : peano, is_peano i -> pred (vect A i) + : forall A : Type, + pred A -> forall i : peano, is_peano i -> pred (vect A i) +is_dyn : pred dyn + : pred dyn +is_zeta : forall A : Type, pred A -> pred (zeta A) + : forall A : Type, pred A -> pred (zeta A) +is_beta : forall A : Type, pred A -> pred (beta A) + : forall A : Type, pred A -> pred (beta A) +is_iota : pred iota + : pred iota +is_large : pred large + : pred large +is_prim_int : pred prim_int + : pred prim_int +is_prim_float : pred prim_float + : pred prim_float +is_fo_record : pred fo_record + : pred fo_record +is_pa_record : forall A : Type, pred A -> pred (pa_record A) + : forall A : Type, pred A -> pred (pa_record A) +is_pr_record : forall A : Type, pred A -> pred (pr_record A) + : forall A : Type, pred A -> pred (pr_record A) +is_enum : pred enum + : pred enum +is_ord : forall p : peano, is_peano p -> pred (ord p) + : forall p : peano, is_peano p -> pred (ord p) +is_ord2 : forall p : peano, is_peano p -> pred (ord2 p) + : forall p : peano, is_peano p -> pred (ord2 p) +is_val : pred val + : pred val +some + (pglobal (const «toto») + «elpi.tests.test_HOAS.19 elpi.tests.test_HOAS.20») +prod `T1` (sort (typ «elpi.tests.test_HOAS.19»)) c0 \ + prod `T2` (sort (typ «elpi.tests.test_HOAS.20»)) c1 \ prod `x` c0 c2 \ c0 +Query assignments: + Body = some + (pglobal (const «toto») + «elpi.tests.test_HOAS.19 elpi.tests.test_HOAS.20») + C = «titi» + Term = prod `T1` (sort (typ «elpi.tests.test_HOAS.19»)) c0 \ + prod `T2` (sort (typ «elpi.tests.test_HOAS.20»)) c1 \ prod `x` c0 c2 \ c0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 300, column 10, character 6470:)] +pglobal (const «toto») X0 +pglobal (const «toto») «u1 u2» +toto +Query assignments: + Spilled_1 = toto + _uvk_62_ = X0 + _uvk_63_ = «elpi.tests.test_HOAS.23 elpi.tests.test_HOAS.24» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.24 + elpi.tests.test_HOAS.23 +SORTS: + +WEAK CONSTRAINTS: + + +empty_fields_t : positive -> Type + : positive -> Type +empty_fields : forall n : empty, empty_fields_t (empty_tag n) + : forall n : empty, empty_fields_t (empty_tag n) +empty_construct +: +forall p : positive, empty_fields_t p -> Datatypes.option empty + : forall p : positive, empty_fields_t p -> Datatypes.option empty +empty_constructP +: +forall n : empty, +empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n + : forall n : empty, + empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n +unit_fields_t : positive -> Type + : positive -> Type +unit_fields : forall n : unit, unit_fields_t (unit_tag n) + : forall n : unit, unit_fields_t (unit_tag n) +unit_construct +: +forall p : positive, unit_fields_t p -> Datatypes.option unit + : forall p : positive, unit_fields_t p -> Datatypes.option unit +unit_constructP +: +forall n : unit, +unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n + : forall n : unit, + unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n +peano_fields_t : positive -> Type + : positive -> Type +peano_fields : forall n : peano, peano_fields_t (peano_tag n) + : forall n : peano, peano_fields_t (peano_tag n) +peano_construct +: +forall p : positive, peano_fields_t p -> Datatypes.option peano + : forall p : positive, peano_fields_t p -> Datatypes.option peano +peano_constructP +: +forall n : peano, +peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n + : forall n : peano, + peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n +option_fields_t : Type -> positive -> Type + : Type -> positive -> Type +option_fields +: +forall (A : Type) (l : option A), option_fields_t A (option_tag A l) + : forall (A : Type) (l : option A), option_fields_t A (option_tag A l) +option_construct +: +forall (A : Type) (p : positive), +option_fields_t A p -> Datatypes.option (option A) + : forall (A : Type) (p : positive), + option_fields_t A p -> Datatypes.option (option A) +option_constructP +: +forall (A : Type) (l : option A), +option_construct A (option_tag A l) (option_fields A l) = Datatypes.Some l + : forall (A : Type) (l : option A), + option_construct A (option_tag A l) (option_fields A l) = + Datatypes.Some l +pair_fields_t : Type -> Type -> positive -> Type + : Type -> Type -> positive -> Type +pair_fields +: +forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) + : forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) +pair_construct +: +forall (A B : Type) (p : positive), +pair_fields_t A B p -> Datatypes.option (pair A B) + : forall (A B : Type) (p : positive), + pair_fields_t A B p -> Datatypes.option (pair A B) +pair_constructP +: +forall (A B : Type) (l : pair A B), +pair_construct A B (pair_tag A B l) (pair_fields A B l) = Datatypes.Some l + : forall (A B : Type) (l : pair A B), + pair_construct A B (pair_tag A B l) (pair_fields A B l) = + Datatypes.Some l +seq_fields_t : Type -> positive -> Type + : Type -> positive -> Type +seq_fields : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) + : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) +seq_construct +: +forall (A : Type) (p : positive), +seq_fields_t A p -> Datatypes.option (seq A) + : forall (A : Type) (p : positive), + seq_fields_t A p -> Datatypes.option (seq A) +seq_constructP +: +forall (A : Type) (l : seq A), +seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l + : forall (A : Type) (l : seq A), + seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l +rose_fields_t : Type -> positive -> Type + : Type -> positive -> Type +rose_fields : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) + : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) +rose_construct +: +forall (A : Type) (p : positive), +rose_fields_t A p -> Datatypes.option (rose A) + : forall (A : Type) (p : positive), + rose_fields_t A p -> Datatypes.option (rose A) +rose_constructP +: +forall (A : Type) (l : rose A), +rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l + : forall (A : Type) (l : rose A), + rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l +beta_fields_t : Type -> positive -> Type + : Type -> positive -> Type +beta_fields : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) + : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) +beta_construct +: +forall (A : Type) (p : positive), +beta_fields_t A p -> Datatypes.option (beta A) + : forall (A : Type) (p : positive), + beta_fields_t A p -> Datatypes.option (beta A) +beta_constructP +: +forall (A : Type) (l : beta A), +beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l + : forall (A : Type) (l : beta A), + beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l +large_fields_t : positive -> Type + : positive -> Type +large_fields : forall n : large, large_fields_t (large_tag n) + : forall n : large, large_fields_t (large_tag n) +large_construct +: +forall p : positive, large_fields_t p -> Datatypes.option large + : forall p : positive, large_fields_t p -> Datatypes.option large +large_constructP +: +forall n : large, +large_construct (large_tag n) (large_fields n) = Datatypes.Some n + : forall n : large, + large_construct (large_tag n) (large_fields n) = Datatypes.Some n +prim_int_fields_t : positive -> Type + : positive -> Type +prim_int_fields : forall n : prim_int, prim_int_fields_t (prim_int_tag n) + : forall n : prim_int, prim_int_fields_t (prim_int_tag n) +prim_int_construct +: +forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int + : forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int +prim_int_constructP +: +forall n : prim_int, +prim_int_construct (prim_int_tag n) (prim_int_fields n) = Datatypes.Some n + : forall n : prim_int, + prim_int_construct (prim_int_tag n) (prim_int_fields n) = + Datatypes.Some n +pa_record_fields_t : Type -> positive -> Type + : Type -> positive -> Type +pa_record_fields +: +forall (A : Type) (l : pa_record A), pa_record_fields_t A (pa_record_tag A l) + : forall (A : Type) (l : pa_record A), + pa_record_fields_t A (pa_record_tag A l) +pa_record_construct +: +forall (A : Type) (p : positive), +pa_record_fields_t A p -> Datatypes.option (pa_record A) + : forall (A : Type) (p : positive), + pa_record_fields_t A p -> Datatypes.option (pa_record A) +pa_record_constructP +: +forall (A : Type) (l : pa_record A), +pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = +Datatypes.Some l + : forall (A : Type) (l : pa_record A), + pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = + Datatypes.Some l +pr_record_fields_t : Type -> positive -> Type + : Type -> positive -> Type +pr_record_fields +: +forall (A : Type) (l : pr_record A), pr_record_fields_t A (pr_record_tag A l) + : forall (A : Type) (l : pr_record A), + pr_record_fields_t A (pr_record_tag A l) +pr_record_construct +: +forall (A : Type) (p : positive), +pr_record_fields_t A p -> Datatypes.option (pr_record A) + : forall (A : Type) (p : positive), + pr_record_fields_t A p -> Datatypes.option (pr_record A) +pr_record_constructP +: +forall (A : Type) (l : pr_record A), +pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = +Datatypes.Some l + : forall (A : Type) (l : pr_record A), + pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = + Datatypes.Some l +sigma_bool_fields_t : positive -> Type + : positive -> Type +sigma_bool_fields +: +forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) + : forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) +sigma_bool_construct +: +forall p : positive, sigma_bool_fields_t p -> Datatypes.option sigma_bool + : forall p : positive, + sigma_bool_fields_t p -> Datatypes.option sigma_bool +sigma_bool_constructP +: +forall l : sigma_bool, +sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = +Datatypes.Some l + : forall l : sigma_bool, + sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = + Datatypes.Some l +ord_fields_t : peano -> positive -> Type + : peano -> positive -> Type +ord_fields : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) + : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) +ord_construct +: +forall (n : peano) (p : positive), +ord_fields_t n p -> Datatypes.option (ord n) + : forall (n : peano) (p : positive), + ord_fields_t n p -> Datatypes.option (ord n) +ord_constructP +: +forall (p : peano) (o : ord p), +ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o + : forall (p : peano) (o : ord p), + ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o +ord2_fields_t : peano -> positive -> Type + : peano -> positive -> Type +ord2_fields : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) + : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) +ord2_construct +: +forall (n : peano) (p : positive), +ord2_fields_t n p -> Datatypes.option (ord2 n) + : forall (n : peano) (p : positive), + ord2_fields_t n p -> Datatypes.option (ord2 n) +ord2_constructP +: +forall (p : peano) (o : ord2 p), +ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o + : forall (p : peano) (o : ord2 p), + ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o +val_fields_t : positive -> Type + : positive -> Type +val_fields : forall i : val, val_fields_t (val_tag i) + : forall i : val, val_fields_t (val_tag i) +val_construct : forall p : positive, val_fields_t p -> Datatypes.option val + : forall p : positive, val_fields_t p -> Datatypes.option val +val_constructP +: +forall v : val, val_construct (val_tag v) (val_fields v) = Datatypes.Some v + : forall v : val, + val_construct (val_tag v) (val_fields v) = Datatypes.Some v +Query assignments: + Res = app + [global (const «Z_of_nat»), + app [global (const «nat_of_bool»), global (indc «true»)]] +Query assignments: + D = parameter P explicit (sort (typ «r1.u0»)) c0 \ + parameter p explicit c0 c1 \ + record r1 (sort (typ «r1.u0»)) mk_r1 + (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ + field [coercion off, canonical ff] f2 + (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) + D1 = parameter P explicit (sort (typ «r1.u0»)) c0 \ + parameter p explicit c0 c1 \ + record r1 (sort (typ «r1.u0»)) mk_r1 + (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ + field [coercion off, canonical ff] f2 + (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) + I = «r1» + UP = «r1.u0» + UR = «r1.u0» +COQC tests/test_eqb.v app [pglobal (const «t») X0, global (indt «nat»), pglobal (const «fnat») X1] @@ -6858,28 +7573,198 @@ WEAK CONSTRAINTS: +Entry binder_constr is +[ LEFTA + [ "exists2"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; ","; term LEVEL + "200"; "&"; term LEVEL "200" + | "exists2"; "'"; pattern LEVEL "0"; ","; term LEVEL "200"; "&"; term LEVEL + "200" + | "exists2"; name; ":"; term LEVEL "200"; ","; term LEVEL "200"; "&"; term + LEVEL "200" + | "exists2"; name; ","; term LEVEL "200"; "&"; term LEVEL "200" + | "exists"; "!"; open_binders; ","; term LEVEL "200" + | "exists"; open_binders; ","; term LEVEL "200" + | "forall"; open_binders; ","; term LEVEL "200" + | "fun"; open_binders; "=>"; term LEVEL "200" + | "let"; "fix"; fix_decl; "in"; term LEVEL "200" + | "let"; "cofix"; cofix_body; "in"; term LEVEL "200" + | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; "in"; term LEVEL + "200" + | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; case_type; "in"; + term LEVEL "200" + | "let"; "'"; pattern LEVEL "200"; "in"; pattern LEVEL "200"; ":="; term + LEVEL "200"; case_type; "in"; term LEVEL "200" + | "let"; name; binders; let_type_cstr; ":="; term LEVEL "200"; "in"; term + LEVEL "200" + | "let"; [ "("; LIST0 name SEP ","; ")" | "()" ]; as_return_type; ":="; + term LEVEL "200"; "in"; term LEVEL "200" + | "if"; term LEVEL "200"; as_return_type; "then"; term LEVEL "200"; "else"; + term LEVEL "200" + | "fix"; fix_decls + | "cofix"; cofix_decls ] ] + +Entry constr is +[ LEFTA + [ "@"; global; univ_annot + | term LEVEL "8" ] ] + +Entry lconstr is +[ LEFTA + [ term LEVEL "200" ] ] + +Entry term is +[ "200" RIGHTA + [ binder_constr ] +| "100" RIGHTA + [ SELF; "<:"; term LEVEL "200" + | SELF; "<<:"; term LEVEL "200" + | SELF; ":>"; term LEVEL "200" + | SELF; ":"; term LEVEL "200" ] +| "99" RIGHTA + [ SELF; "->"; term LEVEL "200" ] +| "95" RIGHTA + [ SELF; "<->"; NEXT ] +| "90" RIGHTA + [ ] +| "85" RIGHTA + [ SELF; "\\/"; term LEVEL "85" ] +| "80" RIGHTA + [ SELF; "/\\"; term LEVEL "80" ] +| "75" RIGHTA + [ "~"; term LEVEL "75" ] +| "70" RIGHTA + [ SELF; ">"; NEXT + | SELF; ">="; NEXT + | SELF; "<"; NEXT; "<="; NEXT + | SELF; "<"; NEXT; "<"; NEXT + | SELF; "<"; NEXT + | SELF; "<="; NEXT; "<"; NEXT + | SELF; "<="; NEXT; "<="; NEXT + | SELF; "<="; NEXT + | SELF; "<>"; NEXT; ":>"; NEXT + | SELF; "<>"; NEXT + | SELF; "="; NEXT; "="; NEXT + | SELF; "="; NEXT; ":>"; NEXT + | SELF; "="; NEXT ] +| "60" RIGHTA + [ SELF; "++"; term LEVEL "60" + | SELF; "::"; term LEVEL "60" ] +| "50" LEFTA + [ SELF; "||"; NEXT + | SELF; "-"; NEXT + | SELF; "+"; NEXT ] +| "40" LEFTA + [ SELF; "&&"; NEXT + | SELF; "/"; NEXT + | SELF; "*"; NEXT ] +| "35" RIGHTA + [ "/"; term LEVEL "35" + | "-"; term LEVEL "35" ] +| "30" RIGHTA + [ SELF; "^"; term LEVEL "30" ] +| LEFTA + [ IDENT "XX"; FIELD "xxx"; LIST0 arg ] +| "10" LEFTA + [ SELF; LIST1 arg + | "@"; global; univ_annot; LIST0 NEXT + | "@"; pattern_ident; LIST1 identref ] +| "9" LEFTA + [ ".."; term LEVEL "0"; ".." ] +| "8" LEFTA + [ ] +| "1" LEFTA + [ SELF; ".("; "@"; global; univ_annot; LIST0 (term LEVEL "9"); ")" + | SELF; ".("; global; univ_annot; LIST0 arg; ")" + | SELF; "%"; IDENT ] +| "0" LEFTA + [ "lib"; ":"; "@"; qualified_name + | "lib"; ":"; qualified_name + | QUOTATION "lp:" + | IDENT "ltac"; ":"; "("; ltac_expr; ")" + | "("; term LEVEL "200"; ","; term LEVEL "200"; ","; LIST1 (term LEVEL + "200") SEP ","; ")" + | "("; term LEVEL "200"; ","; term LEVEL "200"; ")" + | "("; term LEVEL "200"; ")" + | "{|"; record_declaration; '|}' + | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "&"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL + "200"; "&"; term LEVEL "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL + "200"; "&"; term LEVEL "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "&"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "&"; + term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "&"; + term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "}" + | "{"; binder_constr; "}" + | "`{"; term LEVEL "200"; "}" + | "`("; term LEVEL "200"; ")" + | NUMBER + | atomic_constr + | term_match + | ident; fields; univ_annot + | ident; univ_annot + | test_array_opening; "["; "|"; array_elems; "|"; lconstr; type_cstr; + test_array_closing; "|"; "]"; univ_annot ] ] + +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 311, column 12, character 6723:)] +skip int 1 +skip str 33 +skip trm (global (indt «bool»)) +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 311, column 12, character 6723:)] +skip int 1 +skip str 33 +skip trm (global (indt «bool»)) +nat -> bool -> True + : Prop +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 320, column 12, character 6909:)] +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 320, column 12, character 6909:)] +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 324, column 30, character 7010:)] +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 324, column 30, character 7010:)] +[attribute elpi.loc + (leaf-loc File "./tests/test_tactic.v", line 332, column 7, character 7186:)] +[attribute elpi.loc + (leaf-loc File "./tests/test_tactic.v", line 332, column 7, character 7186:)] +c0 \ +app [global (const «Z_of_nat»), app [global (const «nat_of_bool»), c0]] Query assignments: - D = X0 - R = app - [global (indc «ex_intro»), X0, - fun `hd_beta_auto` X0 c0 \ - app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - global (indc «O»)], X1, global (const «p»)] - TY = app - [global (indt «ex»), X0, - fun `hd_beta_auto` X0 c0 \ + Res = app + [global (const «map»), global (indt «bool»), global (const «Z»), + fun `x` (global (indt «bool»)) c0 \ app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - global (indc «O»)]] - _uvk_135_ = X2 - _uvk_136_ = X3 - _uvk_137_ = X4 -Syntactic constraints: - evar (X2) (sort (typ «ex.u0»)) X0 /* suspended on X2, X0 */ - evar (X4) X0 (X1) /* suspended on X4, X1 */ - evar (X1) X0 X5 /* suspended on X1, X5 */ -COQC tests/test_link_order5.v + [global (const «Z_of_nat»), app [global (const «nat_of_bool»), c0]], + app + [global (indc «cons»), global (indt «bool»), global (indc «true»), + app [global (indc «nil»), global (indt «bool»)]]] + _uvk_274_ = X0 + _uvk_275_ = X1 Query assignments: A4 = «elpi.tests.test_HOAS.36» A5 = «elpi.tests.test_HOAS.37» @@ -6982,7 +7867,6 @@ T = «t» TyB = prod `T` (sort (typ «elpi.tests.test_HOAS.41»)) c0 \ prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.41», c0] -hello [int 1, int 2, trm (global (indt «nat»)), str x] TyB2 = prod `T` (sort (typ «elpi.tests.test_HOAS.56»)) c0 \ prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.56», c0] TyB3 = prod `T` (sort (typ «elpi.tests.test_HOAS.58»)) c0 \ @@ -7063,47 +7947,58 @@ WEAK CONSTRAINTS: -COQC tests/test_link_order6.v +H +goal [] (X0) (global (indt «True»)) X1 [trm (global (const «H»))] +goal [] (X0) (global (indt «True»)) X1 + [trm + (app + [global (indt «eq»), global (indt «True»), global (const «H»), + global (const «H»)])] +goal [] (X0) (global (indt «True»)) X1 [trm (global (const «H»))] Query assignments: - R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, c0], - global (indc «O»), global (const «p»)] - TY = app - [global (indt «ex»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, c0]] - _uvk_164_ = X0 - _uvk_165_ = X1 -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 300, column 10, character 6470:)] -coq.pp.box (coq.pp.hv 2) - [coq.pp.str Module, coq.pp.spc, coq.pp.str Foo, coq.pp.spc, coq.pp.str :=, - coq.pp.brk 1 0, coq.pp.str body, coq.pp.spc, coq.pp.str End Foo.] -Module - Foo - := - body - End Foo. -fix foo (x : ?e3) (y : ?e4) {struct x} : ?e2 := - match x as x0 return ?e6@{x:=x0} with - | true => S (S (S O)) - | false => y - end -fix foo x y {struct x} := if x as x0 return ?e6@{x:=x0} then 3 else y -COQC tests/test_link_order7.v -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - = false - : bool -peano.eqb_OK : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) + D = parameter P explicit (sort (typ «r1.u0»)) c0 \ + parameter p explicit c0 c1 \ + record r1 (sort (typ «r1.u0»)) mk_r1 + (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ + field [coercion regular, canonical ff] f2 + (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) + D1 = parameter P explicit (sort (typ «r1.u0»)) c0 \ + parameter p explicit c0 c1 \ + record r1 (sort (typ «r1.u0»)) mk_r1 + (field [coercion reversible, canonical tt] f1 (prod `_` c0 c2 \ c0) c2 \ + field [coercion regular, canonical ff] f2 + (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) + I = «r1» + UP = «r1.u0» + UR = «r1.u0» +Query assignments: + Y = global (indc «is_O») +Query assignments: + R = prod `r` (global (const «ring»)) c0 \ + prod `x` (app [global (const «carr»), c0]) c1 \ + app [global (indt «eq»), app [global (const «carr»), c0], c1, c1] + T = sort (typ «elpi.tests.test_elaborator.75») + _uvk_310_ = c0 \ c1 \ +X0 c0 c1 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.75 elpi.tests.test_elaborator.74 + elpi.tests.test_elaborator.73 elpi.tests.test_elaborator.72 + elpi.tests.test_elaborator.70} |= + ring.u0 <= elpi.tests.test_elaborator.70 + elpi.tests.test_elaborator.70 <= elpi.tests.test_elaborator.75 + elpi.tests.test_elaborator.73 <= elpi.tests.test_elaborator.74 + elpi.tests.test_elaborator.74 <= elpi.tests.test_elaborator.75 +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + -peano.eqb_OK is not universe polymorphic -Arguments peano.eqb_OK x1 x2 -peano.eqb_OK is opaque -Expands to: Constant elpi.apps.derive.examples.readme.peano.eqb_OK -Derivation param1 on const «Nat.add» +hello [int 1, int 2, trm (global (indt «nat»)), str x] «elpi.tests.test_HOAS.68» parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F @@ -7141,229 +8036,26 @@ WEAK CONSTRAINTS: -Derivation param1 on const «Nat.add» took 0.008070 -Derivation param2 on const «Nat.add» -Derivation param2 on const «Nat.add» took 0.008543 -Derivation eqb-alias on const «Nat.add» -Derivation eqb-alias on const «Nat.add» failed, continuing -Derivation eqbcorrect-alias on const «Nat.add» -Derivation eqbcorrect-alias on const «Nat.add» failed, continuing -Derivation eqbOK-alias on const «Nat.add» -Derivation eqbOK-alias on const «Nat.add» failed, continuing -is_add - : forall n : nat, is_nat n -> forall m : nat, is_nat m -> is_nat (n + m) -COQC tests/test_projK.v Query assignments: - R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], - global (indc «O»), global (const «p»)] - TY = app - [global (indt «ex»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] - _uvk_174_ = X0 - _uvk_175_ = c0 \ -X1 c0 - _uvk_176_ = X2 - _uvk_177_ = X3 -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.58 elpi.tests.test_elaborator.57 - elpi.tests.test_elaborator.56 elpi.tests.test_elaborator.55} |= - Set <= elpi.tests.test_elaborator.55 - elpi.tests.test_elaborator.55 <= elpi.tests.test_elaborator.57 - elpi.tests.test_elaborator.56 <= elpi.tests.test_elaborator.57 - elpi.tests.test_elaborator.57 <= elpi.tests.test_elaborator.58 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -Entry binder_constr is -[ LEFTA - [ "exists2"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; ","; term LEVEL - "200"; "&"; term LEVEL "200" - | "exists2"; "'"; pattern LEVEL "0"; ","; term LEVEL "200"; "&"; term LEVEL - "200" - | "exists2"; name; ":"; term LEVEL "200"; ","; term LEVEL "200"; "&"; term - LEVEL "200" - | "exists2"; name; ","; term LEVEL "200"; "&"; term LEVEL "200" - | "exists"; "!"; open_binders; ","; term LEVEL "200" - | "exists"; open_binders; ","; term LEVEL "200" - | "forall"; open_binders; ","; term LEVEL "200" - | "fun"; open_binders; "=>"; term LEVEL "200" - | "let"; "fix"; fix_decl; "in"; term LEVEL "200" - | "let"; "cofix"; cofix_body; "in"; term LEVEL "200" - | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; "in"; term LEVEL - "200" - | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; case_type; "in"; - term LEVEL "200" - | "let"; "'"; pattern LEVEL "200"; "in"; pattern LEVEL "200"; ":="; term - LEVEL "200"; case_type; "in"; term LEVEL "200" - | "let"; name; binders; let_type_cstr; ":="; term LEVEL "200"; "in"; term - LEVEL "200" - | "let"; [ "("; LIST0 name SEP ","; ")" | "()" ]; as_return_type; ":="; - term LEVEL "200"; "in"; term LEVEL "200" - | "if"; term LEVEL "200"; as_return_type; "then"; term LEVEL "200"; "else"; - term LEVEL "200" - | "fix"; fix_decls - | "cofix"; cofix_decls ] ] - -Entry constr is -[ LEFTA - [ "@"; global; univ_annot - | term LEVEL "8" ] ] - -Entry lconstr is -[ LEFTA - [ term LEVEL "200" ] ] - -Entry term is -[ "200" RIGHTA - [ binder_constr ] -| "100" RIGHTA - [ SELF; "<:"; term LEVEL "200" - | SELF; "<<:"; term LEVEL "200" - | SELF; ":>"; term LEVEL "200" - | SELF; ":"; term LEVEL "200" ] -| "99" RIGHTA - [ SELF; "->"; term LEVEL "200" ] -| "95" RIGHTA - [ SELF; "<->"; NEXT ] -| "90" RIGHTA - [ ] -| "85" RIGHTA - [ SELF; "\\/"; term LEVEL "85" ] -| "80" RIGHTA - [ SELF; "/\\"; term LEVEL "80" ] -| "75" RIGHTA - [ "~"; term LEVEL "75" ] -| "70" RIGHTA - [ SELF; ">"; NEXT - | SELF; ">="; NEXT - | SELF; "<"; NEXT; "<="; NEXT - | SELF; "<"; NEXT; "<"; NEXT - | SELF; "<"; NEXT - | SELF; "<="; NEXT; "<"; NEXT - | SELF; "<="; NEXT; "<="; NEXT - | SELF; "<="; NEXT - | SELF; "<>"; NEXT; ":>"; NEXT - | SELF; "<>"; NEXT - | SELF; "="; NEXT; "="; NEXT - | SELF; "="; NEXT; ":>"; NEXT - | SELF; "="; NEXT ] -| "60" RIGHTA - [ SELF; "++"; term LEVEL "60" - | SELF; "::"; term LEVEL "60" ] -| "50" LEFTA - [ SELF; "||"; NEXT - | SELF; "-"; NEXT - | SELF; "+"; NEXT ] -| "40" LEFTA - [ SELF; "&&"; NEXT - | SELF; "/"; NEXT - | SELF; "*"; NEXT ] -| "35" RIGHTA - [ "/"; term LEVEL "35" - | "-"; term LEVEL "35" ] -| "30" RIGHTA - [ SELF; "^"; term LEVEL "30" ] -| LEFTA - [ IDENT "XX"; FIELD "xxx"; LIST0 arg ] -| "10" LEFTA - [ SELF; LIST1 arg - | "@"; global; univ_annot; LIST0 NEXT - | "@"; pattern_ident; LIST1 identref ] -| "9" LEFTA - [ ".."; term LEVEL "0"; ".." ] -| "8" LEFTA - [ ] -| "1" LEFTA - [ SELF; ".("; "@"; global; univ_annot; LIST0 (term LEVEL "9"); ")" - | SELF; ".("; global; univ_annot; LIST0 arg; ")" - | SELF; "%"; IDENT ] -| "0" LEFTA - [ "lib"; ":"; "@"; qualified_name - | "lib"; ":"; qualified_name - | QUOTATION "lp:" - | IDENT "ltac"; ":"; "("; ltac_expr; ")" - | "("; term LEVEL "200"; ","; term LEVEL "200"; ","; LIST1 (term LEVEL - "200") SEP ","; ")" - | "("; term LEVEL "200"; ","; term LEVEL "200"; ")" - | "("; term LEVEL "200"; ")" - | "{|"; record_declaration; '|}' - | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "&"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL - "200"; "&"; term LEVEL "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL - "200"; "&"; term LEVEL "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "&"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "&"; - term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "&"; - term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "}" - | "{"; binder_constr; "}" - | "`{"; term LEVEL "200"; "}" - | "`("; term LEVEL "200"; ")" - | NUMBER - | atomic_constr - | term_match - | ident; fields; univ_annot - | ident; univ_annot - | test_array_opening; "["; "|"; array_elems; "|"; lconstr; type_cstr; - test_array_closing; "|"; "]"; univ_annot ] ] + Y = app + [global (indc «is_S»), app [global (indc «S»), global (indc «O»)], + app [global (indc «is_S»), global (indc «O»), global (indc «is_O»)]] +is_pred = +fun (n : nat) (Pn : is_nat n) => +match + Pn in (is_nat n0) return (is_nat match n0 with + | 0 => n + | S u => u + end) +with +| is_O => Pn +| is_S _ Pu => Pu +end + : forall n : nat, is_nat n -> is_nat (Nat.pred n) -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 311, column 12, character 6723:)] -skip int 1 -skip str 33 -skip trm (global (indt «bool»)) -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 311, column 12, character 6723:)] -skip int 1 -skip str 33 -skip trm (global (indt «bool»)) -nat -> bool -> True - : Prop -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 320, column 12, character 6909:)] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 320, column 12, character 6909:)] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 324, column 30, character 7010:)] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 324, column 30, character 7010:)] -[attribute elpi.loc - (leaf-loc File "./tests/test_tactic.v", line 332, column 7, character 7186:)] -[attribute elpi.loc - (leaf-loc File "./tests/test_tactic.v", line 332, column 7, character 7186:)] +Arguments is_pred n%nat_scope Pn +is_pred : is_nat2nat Nat.pred + : is_nat2nat Nat.pred «elpi.tests.test_HOAS.70» «elpi.tests.test_HOAS.71» Universe constraints: UNIVERSES: {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= @@ -7408,38 +8100,449 @@ WEAK CONSTRAINTS: +is_predn : is_nat2nat predn + : is_nat2nat predn +is_add : is_nat2nat2nat Nat.add + : is_nat2nat2nat Nat.add +coq.pp.box (coq.pp.hv 2) + [coq.pp.str Module, coq.pp.spc, coq.pp.str Foo, coq.pp.spc, coq.pp.str :=, + coq.pp.brk 1 0, coq.pp.str body, coq.pp.spc, coq.pp.str End Foo.] +Module + Foo + := + body + End Foo. +fix foo (x : ?e3) (y : ?e4) {struct x} : ?e2 := + match x as x0 return ?e6@{x:=x0} with + | true => S (S (S O)) + | false => y + end +fix foo x y {struct x} := if x as x0 return ?e6@{x:=x0} then 3 else y +derive.param1_trivial: wrong shape is_nest +. It does not look like a unary parametricity translation of an inductive with no indexes. +{{ nat; S; }} +{{ nat; S; }} Query assignments: - R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], - global (indc «O»), global (const «p»)] - TY = app - [global (indt «ex»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] - _uvk_211_ = X0 - _uvk_212_ = c0 \ -X1 c0 - _uvk_213_ = X2 - _uvk_214_ = X3 + GR = const «Nat.add» + L = {{ nat; S; }} + S = {{ nat; S; }} +COQC tests/test_API2.v +Inductive is_bla : forall H : nat, is_nat H -> bla H -> Type := + is_Bla : forall H : nat, is_nat H -> is_bla 0 is_O (Bla H) + | is_Blu : forall (n : nat) (Pn : is_nat n) (H : bla n), + is_bla n Pn H -> is_bla 1 (is_S 0 is_O) (Blu n H). + +Arguments is_bla _%nat_scope P_ s1 +Arguments is_Bla _%nat_scope P_ +Arguments is_Blu n%nat_scope Pn _ P_ +«elpi.tests.test_HOAS.72» «» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.72} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.72} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.72 + SORTS: + + WEAK CONSTRAINTS: + + +different universe instance lengths +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.72} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.72} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.72 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + E = different universe instance lengths + GRF = indt «F» + GRfnat = const «fnat» + I1 = «elpi.tests.test_HOAS.72» + I2 = «» Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.62 elpi.tests.test_elaborator.61 - elpi.tests.test_elaborator.60 elpi.tests.test_elaborator.59} |= - Set <= elpi.tests.test_elaborator.59 - elpi.tests.test_elaborator.59 <= elpi.tests.test_elaborator.61 - elpi.tests.test_elaborator.60 <= elpi.tests.test_elaborator.61 - elpi.tests.test_elaborator.61 <= elpi.tests.test_elaborator.62 + {elpi.tests.test_HOAS.72} |= ALGEBRAIC UNIVERSES: - {} + {elpi.tests.test_HOAS.72} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.72 +SORTS: + +WEAK CONSTRAINTS: + + +derive.param1_trivial: wrong shape is_vect A PA +. It does not look like a unary parametricity translation of an inductive with no indexes. +Query assignments: + T = global (const «int») + X = primitive (uint63 99) +{{ X.a; }} {{ X.a; Nat.add; nat; }} +{{ X.a; }} {{ X.a; Nat.add; nat; O; S; }} +Query assignments: + AllL = {{ X.a; Nat.add; nat; }} + AllS = {{ X.a; Nat.add; nat; O; S; }} + GR = const «X.b» + L = {{ X.a; }} + M = «elpi.tests.test_API_env.HOAS.X» + S = {{ X.a; }} + Spilled_1 = const «X.a» +Query assignments: + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.73» + I2 = «elpi.tests.test_HOAS.73» + U = «elpi.tests.test_HOAS.73» + UL1 = [«elpi.tests.test_HOAS.73»] +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.73} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.73} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.73 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + PDb = [tc-instance (const «reali_is_fin_length») 0, + tc-instance (const «reali_is_vec_length») 0, + tc-instance (const «reali_is_predn») 0, + tc-instance (const «reali_is_plus'») 0, + tc-instance (const «reali_is_nat_S») 0, + tc-instance (const «reali_is_nat_O») 0, + tc-instance (const «reali_is_prim_float») 0, + tc-instance (const «reali_is_prim_float_PF») 0, + tc-instance (const «reali_is_nest_ConsN») 0, + tc-instance (const «reali_is_w_via») 0, + tc-instance (const «reali_is_val_V») 0, + tc-instance (const «reali_is_peano») 0, + tc-instance (const «reali_is_large») 0, + tc-instance (const «reali_is_empty») 0, + tc-instance (const «reali_is_iota_Why») 0, + tc-instance (const «reali_is_nat2nat2nat») 0, + tc-instance (const «reali_is_unit_tt») 0, + tc-instance (const «reali_is_nest_NilN») 0, + tc-instance (const «reali_is_prim_int») 0, + tc-instance (const «reali_is_vect_VCons») 0, + tc-instance (const «reali_is_large_K26») 0, + tc-instance (const «reali_is_large_K25») 0, + tc-instance (const «reali_is_large_K24») 0, + tc-instance (const «reali_is_large_K23») 0, + tc-instance (const «reali_is_large_K22») 0, + tc-instance (const «reali_is_large_K21») 0, + tc-instance (const «reali_is_large_K20») 0, + tc-instance (const «reali_is_large_K19») 0, + tc-instance (const «reali_is_large_K18») 0, + tc-instance (const «reali_is_large_K17») 0, + tc-instance (const «reali_is_large_K16») 0, + tc-instance (const «reali_is_large_K15») 0, + tc-instance (const «reali_is_large_K14») 0, + tc-instance (const «reali_is_large_K13») 0, + tc-instance (const «reali_is_large_K12») 0, + tc-instance (const «reali_is_large_K11») 0, + tc-instance (const «reali_is_large_K10») 0, + tc-instance (const «reali_is_eq_eq_refl») 0, + tc-instance (const «Coverage.reali_is_unit_tt») 0, + tc-instance (const «reali_is_large_K9») 0, + tc-instance (const «reali_is_large_K8») 0, + tc-instance (const «reali_is_large_K7») 0, + tc-instance (const «reali_is_large_K6») 0, + tc-instance (const «reali_is_large_K5») 0, + tc-instance (const «reali_is_large_K4») 0, + tc-instance (const «reali_is_large_K3») 0, + tc-instance (const «reali_is_large_K2») 0, + tc-instance (const «reali_is_large_K1») 0, + tc-instance (const «reali_is_seq_Cons») 0, + tc-instance (const «reali_is_ord_mkOrd») 0, + tc-instance (const «reali_is_peano_Zero») 0, + tc-instance (const «reali_is_peano_Succ») 0, + tc-instance (const «reali_is_fo_record») 0, + tc-instance (const «reali_is_vec_vcons») 0, + tc-instance (const «reali_is_quasidn») 0, + tc-instance (const «reali_is_vect_VNil») 0, + tc-instance (const «reali_is_seq_Nil») 0, + tc-instance (const «reali_is_zeta_Envelope») 0, + tc-instance (const «reali_is_list_cons») 0, + tc-instance (const «exports.reali_is_eq») 0, + tc-instance (const «reali_is_beta_Redex») 0, + tc-instance (const «reali_is_unit») 0, + tc-instance (const «reali_is_test») 0, + tc-instance (const «reali_is_prod») 0, + tc-instance (const «reali_is_pred») 0, + tc-instance (const «reali_is_list») 0, + tc-instance (const «reali_is_bool») 0, + tc-instance (const «reali_is_sigma_bool_Build_sigma_bool») 0, + tc-instance (const «reali_is_option_Some») 0, + tc-instance (const «reali_is_option_None») 0, + tc-instance (const «reali_is_box_peano») 0, + tc-instance (const «reali_is_nat2nat») 0, + tc-instance (const «reali_is_sigma_bool») 0, + tc-instance (const «reali_is_zeta») 0, + tc-instance (const «reali_is_vect») 0, + tc-instance (const «Coverage.reali_is_unit») 0, + tc-instance (const «reali_is_rose») 0, + tc-instance (const «reali_is_pair») 0, + tc-instance (const «reali_is_ord2») 0, + tc-instance (const «reali_is_nest») 0, + tc-instance (const «reali_is_iota») 0, + tc-instance (const «reali_is_enum») 0, + tc-instance (const «Coverage.reali_is_bool») 0, + tc-instance (const «reali_is_beta») 0, + tc-instance (const «reali_is_vec_length_type») 0, + tc-instance (const «reali_is_vec_length_rec») 0, + tc-instance (const «reali_is_pr_record») 0, + tc-instance (const «reali_is_rose_Node») 0, + tc-instance (const «reali_is_rose_Leaf») 0, + tc-instance (const «reali_is_rose_p_Nodep») 0, + tc-instance (const «reali_is_rose_p_Leafp») 0, + tc-instance (const «reali_is_eq») 0, + tc-instance (const «reali_is_is_list») 0, + tc-instance (const «reali_is_w») 0, + tc-instance (const «reali_is_vec_vnil») 0, + tc-instance (const «reali_is_dep_record_Build_dep_record») 0, + tc-instance (const «reali_is_pr_record_Build_pr_record») 0, + tc-instance (const «reali_is_rose_o_Nodeo») 0, + tc-instance (const «reali_is_rose_o_Leafo») 0, + tc-instance (const «reali_is_weirdn») 0, + tc-instance (const «reali_is_pair_Comma») 0, + tc-instance (const «reali_is_dep_record») 0, + tc-instance (const «reali_is_is_zero») 0, + tc-instance (const «reali_is_pa_record») 0, + tc-instance (const «reali_is_fin_FS») 0, + tc-instance (const «reali_is_fin_FO») 0, + tc-instance (const «reali_is_bool_true») 0, + tc-instance (const «reali_is_divmod») 0, + tc-instance (const «reali_is_prim_int_PI») 0, + tc-instance (const «reali_is_list_nil») 0, + tc-instance (const «reali_is_vec») 0, + tc-instance (const «reali_is_snd») 0, + tc-instance (const «reali_is_nat») 0, + tc-instance (const «reali_is_fst») 0, + tc-instance (const «reali_is_fin») 0, + tc-instance (const «reali_is_div») 0, + tc-instance (const «reali_is_bla») 0, + tc-instance (const «reali_is_add») 0, + tc-instance (const «reali_is_rose_p») 0, + tc-instance (const «reali_is_rose_o») 0, + tc-instance (const «reali_is_is_list_is_nil») 0, + tc-instance (const «reali_is_option») 0, + tc-instance (const «reali_is_is_leq») 0, + tc-instance (const «reali_is_bool_false») 0, + tc-instance (const «reali_is_prod_pair») 0, + tc-instance (const «Coverage.reali_is_bool_true») 0, + tc-instance (const «reali_is_val») 0, + tc-instance (const «reali_is_seq») 0, + tc-instance (const «reali_is_ord») 0, + tc-instance (const «reali_is_dyn») 0, + tc-instance (const «reali_is_is_list_is_cons») 0, + tc-instance (const «reali_is_fo_record_Build_fo_record») 0, + tc-instance (const «Coverage.reali_is_bool_false») 0, + tc-instance (const «reali_is_enum_E3») 0, + tc-instance (const «reali_is_enum_E2») 0, + tc-instance (const «reali_is_enum_E1») 0, + tc-instance (const «reali_is_dyn_box») 0, + tc-instance (const «exports.reali_is_eq_eq_refl») 0, + tc-instance (const «reali_is_box_peano_Box») 0, + tc-instance (const «reali_is_ord2_mkOrd2») 0, + tc-instance (const «reali_is_bla_Blu») 0, + tc-instance (const «reali_is_bla_Bla») 0, + tc-instance (const «reali_is_pa_record_Build_pa_record») 0] + Spilled_1 = indt «reali_db» +File "./tests/test_param1.v", line 158, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +empty_eqb : eq_test2 empty empty + : eq_test2 empty empty +unit_eqb : eq_test2 unit unit + : eq_test2 unit unit +peano_eqb : eq_test2 peano peano + : eq_test2 peano peano +option_eqb : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) + : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) +pair_eqb +: +forall A : Type, +eq_test2 A A -> +forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) + : forall A : Type, + eq_test2 A A -> + forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) +seq_eqb : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) + : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) +rose_eqb : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) + : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) +beta_eqb : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) + : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) +prim_int_eqb : eq_test2 prim_int prim_int + : eq_test2 prim_int prim_int +fo_record_eqb : eq_test2 fo_record fo_record + : eq_test2 fo_record fo_record +pa_record_eqb +: +forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) + : forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) +pr_record_eqb +: +forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) + : forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) +enum_eqb : eq_test2 enum enum + : eq_test2 enum enum +sigma_bool_eqb : eq_test2 sigma_bool sigma_bool + : eq_test2 sigma_bool sigma_bool +ord_eqb : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) + : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) +ord2_eqb : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) + : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) +val_eqb : eq_test2 val val + : eq_test2 val val +alias_eqb : eq_test2 alias alias + : eq_test2 alias alias +Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because +elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 +Query assignments: + E = Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because +elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.74» + I2 = «elpi.tests.test_HOAS.75» + L1 = «elpi.tests.test_HOAS.74» + L2 = «elpi.tests.test_HOAS.75» + U1 = «elpi.tests.test_HOAS.74» + U2 = «elpi.tests.test_HOAS.75» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} |= + elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.75 + elpi.tests.test_HOAS.74 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + T = global (const «float») + X = primitive (float64 993000) +Query assignments: + X1 = «x1» + X2 = «x2» + X3 = «x3» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= + elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.79 + elpi.tests.test_HOAS.78 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F2» + I1 = «elpi.tests.test_HOAS.78» + I2 = «elpi.tests.test_HOAS.79» + L1 = «elpi.tests.test_HOAS.78» + L2 = «elpi.tests.test_HOAS.79» + U1 = «elpi.tests.test_HOAS.78» + U2 = «elpi.tests.test_HOAS.79» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= + elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 + elpi.tests.test_HOAS.78 <= elpi.tests.test_HOAS.79 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.79 + elpi.tests.test_HOAS.78 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + M = [[mode-ground], [mode-input]] +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= + elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.81} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.81 + elpi.tests.test_HOAS.80 + SORTS: + + WEAK CONSTRAINTS: + + +Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because +elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 +Query assignments: + E = Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because +elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.80» + I2 = «elpi.tests.test_HOAS.81» + L1 = «elpi.tests.test_HOAS.80» + L2 = «elpi.tests.test_HOAS.81» + U1 = «elpi.tests.test_HOAS.80» + U2 = «elpi.tests.test_HOAS.81» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= + elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.81} UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.81 + elpi.tests.test_HOAS.80 +SORTS: + +WEAK CONSTRAINTS: + +File "./tests/test_param1.v", line 176, characters 0-66: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +COQC tests/test_param1_functor.v +COQC tests/test_param1_congr.v +Query assignments: + GR = indt «nat» +Query assignments: + _uvk_323_ = X0 +Query assignments: + GR = indt «F» + I = «elpi.tests.test_HOAS.82» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.82} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.82 SORTS: WEAK CONSTRAINTS: +1 +1 +1.000000 +1.2 +Query assignments: + GR = indt «F» +Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3354 <= Set Query assignments: GR = const «Ranalysis5.derivable_pt_lim_CVU» S = {{ Field_theory.AF_1_neq_0; Field_theory.AF_AR; Field_theory.AFdiv_def; @@ -8853,67 +9956,29 @@ Ring_polynom.PEpow; RMicromega.CInv; Field_theory.FEdiv; Tauto.EQ; RMicromega.COpp; Field_theory.FEpow; }} Spilled_1 = 3373 - T = 1.571211 -COQC tests/test_link_order8.v -H -goal [] (X0) (global (indt «True»)) X1 [trm (global (const «H»))] -goal [] (X0) (global (indt «True»)) X1 - [trm - (app - [global (indt «eq»), global (indt «True»), global (const «H»), - global (const «H»)])] -goal [] (X0) (global (indt «True»)) X1 [trm (global (const «H»))] -«elpi.tests.test_HOAS.72» «» -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.72} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.72 - SORTS: - - WEAK CONSTRAINTS: - - -different universe instance lengths -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.72} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.72 - SORTS: - - WEAK CONSTRAINTS: - - + T = 0.793435 +pglobal (indt «F») «elpi.tests.test_HOAS.84» +«elpi.tests.test_HOAS.84» +pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» Query assignments: - E = different universe instance lengths - GRF = indt «F» - GRfnat = const «fnat» - I1 = «elpi.tests.test_HOAS.72» - I2 = «» + GR = indt «F» + GR1 = indc «Build_F» + I = «elpi.tests.test_HOAS.84» + Spilled_1 = pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» + Spilled_2 = pglobal (indt «F») «elpi.tests.test_HOAS.84» Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.72} |= + {elpi.tests.test_HOAS.84} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} + {} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.72 + elpi.tests.test_HOAS.84 SORTS: WEAK CONSTRAINTS: Query assignments: - A = tt - B = 0 - C = 0 - D = sort (typ «Set») - E = [«true», «false»] - F = [global (indt «bool»), global (indt «bool»)] - GR = «bool» -Query assignments: S = {{ Nat.add; eq; nat; O; }} Spilled_1 = 4 T = prod `x` (global (indt «nat»)) c0 \ @@ -8938,333 +10003,6 @@ WEAK CONSTRAINTS: -COQC tests/test_link_order9.v -Query assignments: - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.73» - I2 = «elpi.tests.test_HOAS.73» - U = «elpi.tests.test_HOAS.73» - UL1 = [«elpi.tests.test_HOAS.73»] -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.73} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.73} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.73 -SORTS: - -WEAK CONSTRAINTS: - - -COQC tests/test_API_new_pred.v -Query assignments: - F = app [global (const «nat_of_bool»), global (indc «true»)] -COQC tests/test_link_order_import0.v -Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because -elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 -Query assignments: - E = Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because -elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.74» - I2 = «elpi.tests.test_HOAS.75» - L1 = «elpi.tests.test_HOAS.74» - L2 = «elpi.tests.test_HOAS.75» - U1 = «elpi.tests.test_HOAS.74» - U2 = «elpi.tests.test_HOAS.75» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} |= - elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.75 - elpi.tests.test_HOAS.74 -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - Decl = record Rec (sort (typ «elpi.tests.test_API_env.31»)) BuildRec - (field [] f (sort (typ «elpi.tests.test_API_env.32»)) c0 \ end-record) - _uvk_27_ = «elpi.tests.test_API_env.31» - _uvk_28_ = «elpi.tests.test_API_env.32» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} -UNDEFINED UNIVERSES: - elpi.tests.test_API_env.32 - elpi.tests.test_API_env.31 -SORTS: - -WEAK CONSTRAINTS: - - -Module -Test -:= Struct - Record Rec@{u u0} : Type@{u} := BuildRec - { f : Type@{u0} }. - (* u u0 |= u0 < u *) - Definition f : Rec@{u u0} -> Type@{u0}. - (* u u0 |= u0 < u *) - End - -Test.f@{elpi.tests.test_API_env.33 -elpi.tests.test_API_env.34} - : Test.Rec@{elpi.tests.test_API_env.33 elpi.tests.test_API_env.34} -> - Type@{elpi.tests.test_API_env.34} -(* {elpi.tests.test_API_env.34 elpi.tests.test_API_env.33} |= - elpi.tests.test_API_env.34 < elpi.tests.test_API_env.33 *) -COQC tests/test_API2.v -COQC tests/test_vernacular2.v -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= - elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - GRF = indt «F2» - I1 = «elpi.tests.test_HOAS.78» - I2 = «elpi.tests.test_HOAS.79» - L1 = «elpi.tests.test_HOAS.78» - L2 = «elpi.tests.test_HOAS.79» - U1 = «elpi.tests.test_HOAS.78» - U2 = «elpi.tests.test_HOAS.79» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= - elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 <= elpi.tests.test_HOAS.79 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 -SORTS: - -WEAK CONSTRAINTS: - - -c0 \ app [global (const «nat_of_bool»), c0] -Query assignments: - Res = app - [global (const «map»), global (indt «bool»), global (indt «nat»), - fun `x` (global (indt «bool»)) c0 \ - app [global (const «nat_of_bool»), c0], - app - [global (indc «cons»), global (indt «bool»), global (indc «true»), - app [global (indc «nil»), global (indt «bool»)]]] - _uvk_238_ = X0 - _uvk_239_ = X1 -COQC tests/test_ltac2.v -test1 -str hello -str x -test1 -too many arguments -File "./tests/test_vernacular2.v", line 6, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -File "./tests/test_vernacular2.v", line 7, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -File "./tests/test_vernacular2.v", line 8, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -Query assignments: - LP = «Coq.ZArith.Znat» - MP = «Coq.ZArith.Znat.N2Z» -COQC tests/test_libobject_B.v -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= - elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.81} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.81 - elpi.tests.test_HOAS.80 - SORTS: - - WEAK CONSTRAINTS: - - -Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because -elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 -Query assignments: - E = Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because -elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.80» - I2 = «elpi.tests.test_HOAS.81» - L1 = «elpi.tests.test_HOAS.80» - L2 = «elpi.tests.test_HOAS.81» - U1 = «elpi.tests.test_HOAS.80» - U2 = «elpi.tests.test_HOAS.81» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= - elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.81} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.81 - elpi.tests.test_HOAS.80 -SORTS: - -WEAK CONSTRAINTS: - - -it = elpi_subproof - : True -it : True - -it is not universe polymorphic -it is transparent -Expands to: Constant elpi.tests.test_ltac.it -elpi_subproof = I - : True -elpi_subproof : True - -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context -COQC tests/test_link_order_import1.v -COQC tests/test_link_order_import2.v -Query assignments: - Res = app - [global (const «Z_of_nat»), - app [global (const «nat_of_bool»), global (indc «true»)]] -Query assignments: - GR = indt «nat» -File "./tests/test_vernacular2.v", line 9, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -File "./tests/test_vernacular2.v", line 10, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -Query q X0 -Query r X0 -Result r 1 -COQC tests/test_derive.v -Query assignments: - X1 = «x1» - X2 = «x2» - X3 = «x3» -c0 \ -app [global (const «Z_of_nat»), app [global (const «nat_of_bool»), c0]] -Query assignments: - Res = app - [global (const «map»), global (indt «bool»), global (const «Z»), - fun `x` (global (indt «bool»)) c0 \ - app - [global (const «Z_of_nat»), app [global (const «nat_of_bool»), c0]], - app - [global (indc «cons»), global (indt «bool»), global (indc «true»), - app [global (indc «nil»), global (indt «bool»)]]] - _uvk_274_ = X0 - _uvk_275_ = X1 -COQC tests/test_eq.v -Query assignments: - GR = indt «F» - I = «elpi.tests.test_HOAS.82» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.82} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.82 -SORTS: - -WEAK CONSTRAINTS: - - -COQC tests/test_libobject_C.v -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular2.v", line 11, column 24, character 361:), - attribute fwd_compat_attr (leaf-str )] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular2.v", line 12, column 0, character 366:), - attribute fwd_compat_attr (leaf-str )] -COQC tests/test_link_order_import3.v -Query assignments: - M = [[mode-ground], [mode-input]] -global (indc «O») -app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] -COQC tests/test_isK.v -Query assignments: - R = prod `r` (global (const «ring»)) c0 \ - prod `x` (app [global (const «carr»), c0]) c1 \ - app [global (indt «eq»), app [global (const «carr»), c0], c1, c1] - T = sort (typ «elpi.tests.test_elaborator.75») - _uvk_310_ = c0 \ c1 \ -X0 c0 c1 -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.75 elpi.tests.test_elaborator.74 - elpi.tests.test_elaborator.73 elpi.tests.test_elaborator.72 - elpi.tests.test_elaborator.70} |= - ring.u0 <= elpi.tests.test_elaborator.70 - elpi.tests.test_elaborator.70 <= elpi.tests.test_elaborator.75 - elpi.tests.test_elaborator.73 <= elpi.tests.test_elaborator.74 - elpi.tests.test_elaborator.74 <= elpi.tests.test_elaborator.75 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - GR = indt «F» -COQC tests/test_param1.v -pglobal (indt «F») «elpi.tests.test_HOAS.84» -«elpi.tests.test_HOAS.84» -pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» -Query assignments: - GR = indt «F» - GR1 = indc «Build_F» - I = «elpi.tests.test_HOAS.84» - Spilled_1 = pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» - Spilled_2 = pglobal (indt «F») «elpi.tests.test_HOAS.84» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.84} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.84 -SORTS: - -WEAK CONSTRAINTS: - - -COQC tests/test_map.v -1 -1 -1.000000 -1.2 «elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» Query assignments: I = «elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» @@ -9281,47 +10019,411 @@ WEAK CONSTRAINTS: -Query assignments: - T = global (const «int») - X = primitive (uint63 99) -empty_eq : eq_test empty - : eq_test empty -unit_eq : eq_test unit - : eq_test unit -peano_eq : eq_test peano - : eq_test peano -option_eq : forall A : Type, eq_test A -> eq_test (option A) - : forall A : Type, eq_test A -> eq_test (option A) -pair_eq +Skipping derivation map on indt «nat» since it has been already run +Derivation lens on indt «nat» +Derivation lens on indt «nat» failed, continuing +Skipping derivation param1 on indt «nat» since it has been already run +Skipping derivation param2 on indt «nat» since it has been already run +Skipping derivation tag on indt «nat» since it has been already run +Skipping derivation eqType_ast on indt «nat» since it has been already run +Derivation projK on indt «nat» +Derivation projK on indt «nat» took 0.002611 +Derivation isK on indt «nat» +Derivation isK on indt «nat» took 0.004082 +Derivation eq on indt «nat» +Derivation eq on indt «nat» took 0.003737 +Derivation invert on indt «nat» +Derivation invert on indt «nat» took 0.004661 +Skipping derivation lens_laws on indt «nat» since it has been already run +Skipping derivation param1_congr on indt «nat» +since it has been already run +Skipping derivation param1_inhab on indt «nat» +since it has been already run +Skipping derivation param1_functor on indt «nat» +since it has been already run +Skipping derivation fields on indt «nat» since it has been already run +Derivation bcongr on indt «nat» +Derivation bcongr on indt «nat» took 0.004595 +Derivation idx2inv on indt «nat» +Derivation idx2inv on indt «nat» failed, continuing +Skipping derivation param1_trivial on indt «nat» +since it has been already run +Skipping derivation induction on indt «nat» since it has been already run +Skipping derivation eqb on indt «nat» since it has been already run +Derivation eqK on indt «nat» +congr_is_tt : is_tt = is_tt + : is_tt = is_tt +congr_is_Zero : is_Zero = is_Zero + : is_Zero = is_Zero +congr_is_Succ : -forall A : Type, -eq_test A -> forall B : Type, eq_test B -> eq_test (pair A B) - : forall A : Type, - eq_test A -> forall B : Type, eq_test B -> eq_test (pair A B) -seq_eq : forall A : Type, eq_test A -> eq_test (seq A) - : forall A : Type, eq_test A -> eq_test (seq A) -rose_eq : forall A : Type, eq_test A -> eq_test (rose A) - : forall A : Type, eq_test A -> eq_test (rose A) -vect_eq : forall A : Type, eq_test A -> forall i : peano, eq_test (vect A i) - : forall A : Type, eq_test A -> forall i : peano, eq_test (vect A i) -zeta_eq : forall A : Type, eq_test A -> eq_test (zeta A) - : forall A : Type, eq_test A -> eq_test (zeta A) -beta_eq : forall A : Type, eq_test A -> eq_test (beta A) - : forall A : Type, eq_test A -> eq_test (beta A) -large_eq : eq_test large - : eq_test large -prim_int_eq : eq_test prim_int - : eq_test prim_int -prim_float_eq : eq_test prim_float - : eq_test prim_float -fo_record_eq : eq_test fo_record - : eq_test fo_record -pa_record_eq : forall A : Type, eq_test A -> eq_test (pa_record A) - : forall A : Type, eq_test A -> eq_test (pa_record A) -pr_record_eq : forall A : Type, eq_test A -> eq_test (pr_record A) - : forall A : Type, eq_test A -> eq_test (pr_record A) -enum_eq : eq_test enum - : eq_test enum +forall (x : peano) (p1 p2 : is_peano x), +p1 = p2 -> is_Succ x p1 = is_Succ x p2 + : forall (x : peano) (p1 p2 : is_peano x), + p1 = p2 -> is_Succ x p1 = is_Succ x p2 +congr_is_None +: +forall (A : Type) (PA : A -> Type), is_None A PA = is_None A PA + : forall (A : Type) (PA : A -> Type), is_None A PA = is_None A PA +congr_is_Some +: +forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), +p1 = p2 -> is_Some A PA x p1 = is_Some A PA x p2 + : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), + p1 = p2 -> is_Some A PA x p1 = is_Some A PA x p2 +Derivation eqK on indt «nat» took 0.005873 +Skipping derivation eqbcorrect on indt «nat» since it has been already run +Derivation eqcorrect on indt «nat» +congr_is_Comma +: +forall (A : Type) (PA : A -> Type) (B : Type) (PB : B -> Type) + (x : A) (p1 p2 : PA x), +p1 = p2 -> +forall (y : B) (q1 q2 : PB y), +q1 = q2 -> is_Comma A PA B PB x p1 y q1 = is_Comma A PA B PB x p2 y q2 + : forall (A : Type) (PA : A -> Type) (B : Type) + (PB : B -> Type) (x : A) (p1 p2 : PA x), + p1 = p2 -> + forall (y : B) (q1 q2 : PB y), + q1 = q2 -> is_Comma A PA B PB x p1 y q1 = is_Comma A PA B PB x p2 y q2 +congr_is_Nil : forall (A : Type) (PA : A -> Type), is_Nil A PA = is_Nil A PA + : forall (A : Type) (PA : A -> Type), is_Nil A PA = is_Nil A PA +Derivation eqcorrect on indt «nat» took 0.002114 +Skipping derivation eqbOK on indt «nat» since it has been already run +Derivation eqOK on indt «nat» +congr_is_Cons +: +forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), +p1 = p2 -> +forall (y : seq A) (q1 q2 : is_seq A PA y), +q1 = q2 -> is_Cons A PA x p1 y q1 = is_Cons A PA x p2 y q2 + : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), + p1 = p2 -> + forall (y : seq A) (q1 q2 : is_seq A PA y), + q1 = q2 -> is_Cons A PA x p1 y q1 = is_Cons A PA x p2 y q2 +Derivation eqOK on indt «nat» took 0.001725 +congr_is_Leaf +: +forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), +p1 = p2 -> is_Leaf A PA x p1 = is_Leaf A PA x p2 + : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), + p1 = p2 -> is_Leaf A PA x p1 = is_Leaf A PA x p2 +nat_eqb : nat -> nat -> bool + : nat -> nat -> bool +congr_is_Node +: +forall (A : Type) (PA : A -> Type) (x : seq (rose A)) + (p1 p2 : is_seq (rose A) (is_rose A PA) x), +p1 = p2 -> is_Node A PA x p1 = is_Node A PA x p2 + : forall (A : Type) (PA : A -> Type) (x : seq (rose A)) + (p1 p2 : is_seq (rose A) (is_rose A PA) x), + p1 = p2 -> is_Node A PA x p1 = is_Node A PA x p2 +is_nat : nat -> Type + : nat -> Type +is_nat_inhab : (forall x : nat, is_nat x) + : forall x : nat, is_nat x +is_nat_functor : (forall x : nat, is_nat x -> is_nat x) + : forall x : nat, is_nat x -> is_nat x +congr_is_via +: +forall (A : Type) (PA : A -> Type) (x : A -> w A) + (p1 p2 : forall H : A, PA H -> is_w A PA (x H)), +p1 = p2 -> is_via A PA x p1 = is_via A PA x p2 + : forall (A : Type) (PA : A -> Type) (x : A -> w A) + (p1 p2 : forall H : A, PA H -> is_w A PA (x H)), + p1 = p2 -> is_via A PA x p1 = is_via A PA x p2 +congr_is_VNil +: +forall (A : Type) (PA : A -> Type), is_VNil A PA = is_VNil A PA + : forall (A : Type) (PA : A -> Type), is_VNil A PA = is_VNil A PA +nat_induction + : (forall P : nat -> Type, + P 0 -> + (forall n : nat, P n -> P (S n)) -> forall x : nat, is_nat x -> P x) + : forall P : nat -> Type, + P 0 -> + (forall n : nat, P n -> P (S n)) -> forall x : nat, is_nat x -> P x +nat_tag : nat -> BinNums.positive + : nat -> BinNums.positive +nat_fields_t : BinNums.positive -> Type + : BinNums.positive -> Type +nat_fields : (forall n : nat, nat_fields_t (nat_tag n)) + : forall n : nat, nat_fields_t (nat_tag n) +congr_is_Envelope +: +forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), +p1 = p2 -> +forall (y : A) (q1 q2 : PA y), +q1 = q2 -> is_Envelope A PA x p1 y q1 = is_Envelope A PA x p2 y q2 + : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), + p1 = p2 -> + forall (y : A) (q1 q2 : PA y), + q1 = q2 -> is_Envelope A PA x p1 y q1 = is_Envelope A PA x p2 y q2 +nat_construct : (forall p : BinNums.positive, nat_fields_t p -> option nat) + : forall p : BinNums.positive, nat_fields_t p -> option nat +nat_constructP + : (forall n : nat, nat_construct (nat_tag n) (nat_fields n) = Some n) + : forall n : nat, nat_construct (nat_tag n) (nat_fields n) = Some n +congr_is_Redex +: +forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), +p1 = p2 -> is_Redex A PA x p1 = is_Redex A PA x p2 + : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), + p1 = p2 -> is_Redex A PA x p1 = is_Redex A PA x p2 +nat_eqb : nat -> nat -> bool + : nat -> nat -> bool +congr_is_PI + : forall (x : PrimInt63.int) (p1 p2 : is_uint63 x), + p1 = p2 -> is_PI x p1 = is_PI x p2 +nat_eqb_correct + : forall x : nat, eqb_correct_on nat_eqb x +congr_is_PF + : forall (x : PrimFloat.float) (p1 p2 : is_float64 x), + p1 = p2 -> is_PF x p1 = is_PF x p2 +nat_eqb_refl + : forall x : nat, eqb_refl_on nat_eqb x +congr_is_Build_fo_record +: +forall (n : peano) (p1 p2 : is_peano n), +p1 = p2 -> +forall (b : unit) (q1 q2 : is_unit b), +q1 = q2 -> is_Build_fo_record n p1 b q1 = is_Build_fo_record n p2 b q2 + : forall (n : peano) (p1 p2 : is_peano n), + p1 = p2 -> + forall (b : unit) (q1 q2 : is_unit b), + q1 = q2 -> is_Build_fo_record n p1 b q1 = is_Build_fo_record n p2 b q2 +congr_is_Build_pa_record +: +forall (A : Type) (PA : A -> Type) (n : peano) (p1 p2 : is_peano n), +p1 = p2 -> +forall (b : A) (q1 q2 : PA b), +q1 = q2 -> +is_Build_pa_record A PA n p1 b q1 = is_Build_pa_record A PA n p2 b q2 + : forall (A : Type) (PA : A -> Type) (n : peano) (p1 p2 : is_peano n), + p1 = p2 -> + forall (b : A) (q1 q2 : PA b), + q1 = q2 -> + is_Build_pa_record A PA n p1 b q1 = is_Build_pa_record A PA n p2 b q2 +congr_is_Build_pr_record +: +forall (A : Type) (pr : A -> Type) (n : peano) (p1 p2 : is_peano n), +p1 = p2 -> +forall (b : A) (q1 q2 : pr b), +q1 = q2 -> +is_Build_pr_record A pr n p1 b q1 = is_Build_pr_record A pr n p2 b q2 + : forall (A : Type) (pr : A -> Type) (n : peano) (p1 p2 : is_peano n), + p1 = p2 -> + forall (b : A) (q1 q2 : pr b), + q1 = q2 -> + is_Build_pr_record A pr n p1 b q1 = is_Build_pr_record A pr n p2 b q2 +congr_is_E1 : is_E1 = is_E1 + : is_E1 = is_E1 +is_empty_functor : func is_empty + : func is_empty +is_unit_functor : func is_unit + : func is_unit +is_peano_functor : func is_peano + : func is_peano +is_option_functor : func1 is_option + : func1 is_option +is_pair_functor : func2 is_pair + : func2 is_pair +is_seq_functor : func1 is_seq + : func1 is_seq +is_rose_functor : func1 is_rose + : func1 is_rose +list_map : (forall A B : Type, (A -> B) -> list A -> list B) + : forall A B : Type, (A -> B) -> list A -> list B +is_vect_functor +: +forall (A : Type) (P Q : A -> Type), +(forall y : A, P y -> Q y) -> +forall (i : peano) (p : is_peano i) (v : vect A i), +is_vect A P i p v -> is_vect A Q i p v + : forall (A : Type) (P Q : A -> Type), + (forall y : A, P y -> Q y) -> + forall (i : peano) (p : is_peano i) (v : vect A i), + is_vect A P i p v -> is_vect A Q i p v +is_dyn_functor : func is_dyn + : func is_dyn +is_nil : (forall (A : Type) (P : A -> Type), is_list A P nil) + : forall (A : Type) (P : A -> Type), is_list A P nil +is_zeta_functor : func1 is_zeta + : func1 is_zeta +is_beta_functor : func1 is_beta + : func1 is_beta +is_cons + : (forall (A : Type) (P : A -> Type) (x : A), + P x -> forall tl : list A, is_list A P tl -> is_list A P (x :: tl)) + : forall (A : Type) (P : A -> Type) (x : A), + P x -> forall tl : list A, is_list A P tl -> is_list A P (x :: tl) +is_iota_functor : func is_iota + : func is_iota +is_large_functor : func is_large + : func is_large +is_prim_int_functor : func is_prim_int + : func is_prim_int +is_prim_float_functor : func is_prim_float + : func is_prim_float +is_fo_record_functor : func is_fo_record + : func is_fo_record +is_list_functor + : (forall (A : Type) (P Q : A -> Type), + (forall x : A, P x -> Q x) -> + forall l : list A, is_list A P l -> is_list A Q l) + : forall (A : Type) (P Q : A -> Type), + (forall x : A, P x -> Q x) -> + forall l : list A, is_list A P l -> is_list A Q l +is_pa_record_functor : func1 is_pa_record + : func1 is_pa_record +is_pr_record_functor : func1 is_pr_record + : func1 is_pr_record +is_enum_functor : func is_enum + : func is_enum +is_ord_functor : forall (n : peano) (pn : is_peano n), func (is_ord n pn) + : forall (n : peano) (pn : is_peano n), func (is_ord n pn) +list_induction + : (forall (A : Type) (PA : A -> Type) (P : list A -> Type), + P nil -> + (forall x : A, PA x -> forall xs : list A, P xs -> P (x :: xs)%list) -> + forall l : list A, is_list A PA l -> P l) + : forall (A : Type) (PA : A -> Type) (P : list A -> Type), + P nil -> + (forall x : A, PA x -> forall xs : list A, P xs -> P (x :: xs)%list) -> + forall l : list A, is_list A PA l -> P l +is_ord2_functor : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) + : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) +is_val_functor : func is_val + : func is_val +list_tag : (forall A : Type, list A -> BinNums.positive) + : forall A : Type, list A -> BinNums.positive +list_fields_t : Type -> BinNums.positive -> Type + : Type -> BinNums.positive -> Type +list_fields + : (forall (A : Type) (l : list A), list_fields_t A (list_tag A l)) + : forall (A : Type) (l : list A), list_fields_t A (list_tag A l) +list_construct + : (forall (A : Type) (p : BinNums.positive), + list_fields_t A p -> option (list A)) + : forall (A : Type) (p : BinNums.positive), + list_fields_t A p -> option (list A) +list_constructP + : (forall (A : Type) (l : list A), + list_construct A (list_tag A l) (list_fields A l) = Some l) + : forall (A : Type) (l : list A), + list_construct A (list_tag A l) (list_fields A l) = Some l +list_eqb : (forall A : Type, (A -> A -> bool) -> list A -> list A -> bool) + : forall A : Type, (A -> A -> bool) -> list A -> list A -> bool +list_eqb_correct + : forall (a : Type) (eqA : a -> a -> bool), + eqb_correct eqA -> + forall x : list a, eqb_correct_on (list_eqb a eqA) x +list_eqb_refl + : forall (a : Type) (eqA : a -> a -> bool), + eqb_reflexive eqA -> forall x : list a, eqb_refl_on (list_eqb a eqA) x +COQC tests/test_param1_trivial.v +COQC tests/test_induction.v +projSucc1 : peano -> peano -> peano + : peano -> peano -> peano +projSome1 : forall A : Type, A -> option A -> A + : forall A : Type, A -> option A -> A +projComma1 : forall A B : Type, A -> B -> pair A B -> A + : forall A B : Type, A -> B -> pair A B -> A +projComma2 : forall A B : Type, A -> B -> pair A B -> B + : forall A B : Type, A -> B -> pair A B -> B +projCons1 : forall A : Type, A -> seq A -> seq A -> A + : forall A : Type, A -> seq A -> seq A -> A +projCons2 : forall A : Type, A -> seq A -> seq A -> seq A + : forall A : Type, A -> seq A -> seq A -> seq A +projLeaf1 : forall A : Type, A -> rose A -> A + : forall A : Type, A -> rose A -> A +projNode1 : forall A : Type, seq (rose A) -> rose A -> seq (rose A) + : forall A : Type, seq (rose A) -> rose A -> seq (rose A) +projConsN1 : forall A : Type, A -> nest (pair A A) -> nest A -> A + : forall A : Type, A -> nest (pair A A) -> nest A -> A +projConsN2 +: +forall A : Type, A -> nest (pair A A) -> nest A -> nest (pair A A) + : forall A : Type, A -> nest (pair A A) -> nest A -> nest (pair A A) +projvia1 : forall A : Type, (A -> w A) -> w A -> A -> w A + : forall A : Type, (A -> w A) -> w A -> A -> w A +projVCons1 +: +forall (A : Type) (i : peano), +A -> forall j : peano, vect A j -> vect A i -> A + : forall (A : Type) (i : peano), + A -> forall j : peano, vect A j -> vect A i -> A +projVCons2 +: +forall (A : Type) (i : peano), +A -> forall j : peano, vect A j -> vect A i -> peano + : forall (A : Type) (i : peano), + A -> forall j : peano, vect A j -> vect A i -> peano +projVCons3 +: +forall (A : Type) (i : peano), +A -> forall j : peano, vect A j -> vect A i -> {w : peano & vect A w} + : forall (A : Type) (i : peano), + A -> forall j : peano, vect A j -> vect A i -> {w : peano & vect A w} +projbox1 : forall T : Type, T -> dyn -> Type + : forall T : Type, T -> dyn -> Type +projbox2 : forall T : Type, T -> dyn -> {T0 : Type & T0} + : forall T : Type, T -> dyn -> {T0 : Type & T0} +projEnvelope1 : forall A : Type, A -> A -> zeta A -> A + : forall A : Type, A -> A -> zeta A -> A +eq_refl : projEnvelope1 nat 1 1 (Envelope nat 0 1) = 0 + : projEnvelope1 nat 1 1 (Envelope nat 0 1) = 0 +projEnvelope2 : forall A : Type, A -> A -> zeta A -> A + : forall A : Type, A -> A -> zeta A -> A +eq_refl : projEnvelope2 nat 1 1 (Envelope nat 1 0) = 0 + : projEnvelope2 nat 1 1 (Envelope nat 1 0) = 0 +projRedex1 : forall A : Type, A -> beta A -> A + : forall A : Type, A -> beta A -> A +projWhy1 +: +forall n : peano, +match n with +| Zero => peano +| Succ _ => unit +end -> iota -> peano + : forall n : peano, + match n with + | Zero => peano + | Succ _ => unit + end -> iota -> peano +projWhy2 +: +forall n : peano, +match n with +| Zero => peano +| Succ _ => unit +end -> +iota -> {i : peano & match i with + | Zero => peano + | Succ _ => unit + end} + : forall n : peano, + match n with + | Zero => peano + | Succ _ => unit + end -> + iota -> + {i : peano & match i with + | Zero => peano + | Succ _ => unit + end} +projPI1 + : PrimInt63.int -> prim_int -> PrimInt63.int +projPF1 + : PrimFloat.float -> prim_float -> PrimFloat.float +projBuild_fo_record1 : peano -> unit -> fo_record -> peano + : peano -> unit -> fo_record -> peano +projBuild_fo_record2 : peano -> unit -> fo_record -> unit + : peano -> unit -> fo_record -> unit +projBuild_pa_record2 : forall A : Type, peano -> A -> pa_record A -> A + : forall A : Type, peano -> A -> pa_record A -> A +projBuild_pr_record2 : forall A : Type, peano -> A -> pr_record A -> A + : forall A : Type, peano -> A -> pr_record A -> A Universe constraints: ------------------ Universe constraints: UNIVERSES: @@ -9382,10 +10484,41 @@ : Type@{elpi.tests.test_HOAS.88} (* {elpi.tests.test_HOAS.88} |= Set < elpi.tests.test_HOAS.88 *) Box not a defined object. -COQC tests/test_lens_laws.v +COQC tests/test_bcongr.v Query assignments: - T = global (const «float») - X = primitive (float64 993000) + Decl = record Rec (sort (typ «elpi.tests.test_API_env.31»)) BuildRec + (field [] f (sort (typ «elpi.tests.test_API_env.32»)) c0 \ end-record) + _uvk_27_ = «elpi.tests.test_API_env.31» + _uvk_28_ = «elpi.tests.test_API_env.32» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} +UNDEFINED UNIVERSES: + elpi.tests.test_API_env.32 + elpi.tests.test_API_env.31 +SORTS: + +WEAK CONSTRAINTS: + + +Module +Test +:= Struct + Record Rec@{u u0} : Type@{u} := BuildRec + { f : Type@{u0} }. + (* u u0 |= u0 < u *) + Definition f : Rec@{u u0} -> Type@{u0}. + (* u u0 |= u0 < u *) + End + +Test.f@{elpi.tests.test_API_env.33 +elpi.tests.test_API_env.34} + : Test.Rec@{elpi.tests.test_API_env.33 elpi.tests.test_API_env.34} -> + Type@{elpi.tests.test_API_env.34} +(* {elpi.tests.test_API_env.34 elpi.tests.test_API_env.33} |= + elpi.tests.test_API_env.34 < elpi.tests.test_API_env.33 *) sort (typ «Set») Query assignments: U = «elpi.tests.test_HOAS.89» @@ -9408,6 +10541,12 @@ Arguments tree A%type_scope Arguments leaf A%type_scope _ Arguments node A%type_scope _ _%list_scope +File "./tests/test_API2.v", line 126, characters 0-16: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] +Query assignments: + LP = «Coq.ZArith.Znat» + MP = «Coq.ZArith.Znat.N2Z» parameter A explicit (sort (typ «elpi.tests.test_HOAS.98»)) c0 \ inductive tree tt (arity (sort (typ «elpi.tests.test_HOAS.99»))) c1 \ [constructor leaf (arity (prod `_` c0 c2 \ c1)), @@ -9472,821 +10611,152 @@ WEAK CONSTRAINTS: -COQC tests/test_fields.v -unit_is_tt : unit -> bool - : unit -> bool -peano_is_Zero : peano -> bool - : peano -> bool -peano_is_Succ : peano -> bool - : peano -> bool -option_is_None : forall A : Type, option A -> bool - : forall A : Type, option A -> bool -option_is_Some : forall A : Type, option A -> bool - : forall A : Type, option A -> bool -pair_is_Comma : forall A B : Type, pair A B -> bool - : forall A B : Type, pair A B -> bool -seq_is_Nil : forall A : Type, seq A -> bool - : forall A : Type, seq A -> bool -seq_is_Cons : forall A : Type, seq A -> bool - : forall A : Type, seq A -> bool -rose_is_Leaf : forall A : Type, rose A -> bool - : forall A : Type, rose A -> bool -rose_is_Node : forall A : Type, rose A -> bool - : forall A : Type, rose A -> bool -nest_is_NilN : forall A : Type, nest A -> bool - : forall A : Type, nest A -> bool -nest_is_ConsN : forall A : Type, nest A -> bool - : forall A : Type, nest A -> bool -w_is_via : forall A : Type, w A -> bool - : forall A : Type, w A -> bool -vect_is_VNil : forall (A : Type) (i : peano), vect A i -> bool - : forall (A : Type) (i : peano), vect A i -> bool -vect_is_VCons : forall (A : Type) (i : peano), vect A i -> bool - : forall (A : Type) (i : peano), vect A i -> bool -dyn_is_box : dyn -> bool - : dyn -> bool -zeta_is_Envelope : forall A : Type, zeta A -> bool - : forall A : Type, zeta A -> bool -beta_is_Redex : forall A : Type, beta A -> bool - : forall A : Type, beta A -> bool -iota_is_Why : iota -> bool - : iota -> bool -large_is_K1 - : large -> bool -large_is_K2 - : large -> bool -prim_int_is_PI - : prim_int -> bool -prim_float_is_PF - : prim_float -> bool -fo_record_is_Build_fo_record : fo_record -> bool - : fo_record -> bool -pa_record_is_Build_pa_record : forall A : Type, pa_record A -> bool - : forall A : Type, pa_record A -> bool -pr_record_is_Build_pr_record : forall A : Type, pr_record A -> bool - : forall A : Type, pr_record A -> bool -enum_is_E1 : enum -> bool - : enum -> bool -empty_map : map empty - : map empty -unit_map : map unit - : map unit -peano_map : map peano - : map peano -option_map : map1 option - : map1 option -pair_map -: -forall A B : Type, -(A -> B) -> forall C D : Type, (C -> D) -> pair A C -> pair B D - : forall A B : Type, - (A -> B) -> forall C D : Type, (C -> D) -> pair A C -> pair B D -seq_map : map1 seq - : map1 seq -rose_map : map1 rose - : map1 rose -vect_map -: -forall A B : Type, (A -> B) -> forall i : peano, vect A i -> vect B i - : forall A B : Type, (A -> B) -> forall i : peano, vect A i -> vect B i -dyn_map : map dyn - : map dyn -zeta_map : map1 zeta - : map1 zeta -iota_map : map iota - : map iota -large_map : map large - : map large -prim_int_map : map prim_int - : map prim_int -prim_float_map : map prim_float - : map prim_float -pa_record_map : map1 pa_record - : map1 pa_record -pr_record_map : map1 pr_record - : map1 pr_record -File "./tests/test_API2.v", line 126, characters 0-16: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] -Query assignments: - _uvk_323_ = X0 -_f1_view_set : view_set _f1 - : view_set _f1 -_f2_view_set : view_set _f2 - : view_set _f2 -_f3_view_set : forall A : Type, view_set _f3 - : forall A : Type, view_set _f3 -_f4_view_set : forall A : Type, view_set _f4 - : forall A : Type, view_set _f4 -_pf3_view_set : forall A : Type, view_set _pf3 - : forall A : Type, view_set _pf3 -_pf4_view_set : forall A : Type, view_set _pf4 - : forall A : Type, view_set _pf4 -_f1_set_set : set_set _f1 - : set_set _f1 -_f2_set_set : set_set _f2 - : set_set _f2 -_f3_set_set : forall A : Type, set_set _f3 - : forall A : Type, set_set _f3 -_f4_set_set : forall A : Type, set_set _f4 - : forall A : Type, set_set _f4 -_pf3_set_set : forall A : Type, set_set _pf3 - : forall A : Type, set_set _pf3 -_pf4_set_set : forall A : Type, set_set _pf4 - : forall A : Type, set_set _pf4 -_f1_set_view : set_view _f1 - : set_view _f1 -_f2_set_view : set_view _f2 - : set_view _f2 -_f3_set_view : forall A : Type, set_view _f3 - : forall A : Type, set_view _f3 -_f4_set_view : forall A : Type, set_view _f4 - : forall A : Type, set_view _f4 -_pf3_set_view : forall A : Type, set_view _pf3 - : forall A : Type, set_view _pf3 -_pf4_set_view : forall A : Type, set_view _pf4 - : forall A : Type, set_view _pf4 -_f1_f2_exchange : exchange _f1 _f2 - : exchange _f1 _f2 -_f2_f1_exchange : exchange _f2 _f1 - : exchange _f2 _f1 -_f3_f4_exchange : forall A : Type, exchange _f3 _f4 - : forall A : Type, exchange _f3 _f4 -_f4_f3_exchange : forall A : Type, exchange _f4 _f3 - : forall A : Type, exchange _f4 _f3 -_pf3_pf4_exchange : forall A : Type, exchange _pf3 _pf4 - : forall A : Type, exchange _pf3 _pf4 -_pf4_pf3_exchange : forall A : Type, exchange _pf4 _pf3 - : forall A : Type, exchange _pf4 _pf3 -is_empty : pred empty - : pred empty -is_unit : pred unit - : pred unit -is_peano : pred peano - : pred peano -is_option : forall A : Type, pred A -> pred (option A) - : forall A : Type, pred A -> pred (option A) -is_pair -: -forall A : Type, pred A -> forall B : Type, pred B -> pred (pair A B) - : forall A : Type, pred A -> forall B : Type, pred B -> pred (pair A B) -is_seq : forall A : Type, pred A -> pred (seq A) - : forall A : Type, pred A -> pred (seq A) -is_rose : forall A : Type, pred A -> pred (rose A) - : forall A : Type, pred A -> pred (rose A) -is_nest : forall A : Type, pred A -> pred (nest A) - : forall A : Type, pred A -> pred (nest A) -is_w : forall A : Type, pred A -> pred (w A) - : forall A : Type, pred A -> pred (w A) -is_vect -: -forall A : Type, pred A -> forall i : peano, is_peano i -> pred (vect A i) - : forall A : Type, - pred A -> forall i : peano, is_peano i -> pred (vect A i) -is_dyn : pred dyn - : pred dyn -is_zeta : forall A : Type, pred A -> pred (zeta A) - : forall A : Type, pred A -> pred (zeta A) -is_beta : forall A : Type, pred A -> pred (beta A) - : forall A : Type, pred A -> pred (beta A) -is_iota : pred iota - : pred iota -is_large : pred large - : pred large -is_prim_int : pred prim_int - : pred prim_int -is_prim_float : pred prim_float - : pred prim_float -is_fo_record : pred fo_record - : pred fo_record -is_pa_record : forall A : Type, pred A -> pred (pa_record A) - : forall A : Type, pred A -> pred (pa_record A) -is_pr_record : forall A : Type, pred A -> pred (pr_record A) - : forall A : Type, pred A -> pred (pr_record A) -is_enum : pred enum - : pred enum -is_ord : forall p : peano, is_peano p -> pred (ord p) - : forall p : peano, is_peano p -> pred (ord p) -is_ord2 : forall p : peano, is_peano p -> pred (ord2 p) - : forall p : peano, is_peano p -> pred (ord2 p) -is_val : pred val - : pred val File "./tests/test_API2.v", line 134, characters 0-14: Warning: Option Foo Bar is deprecated. elpi [deprecated-option,deprecated,default] -Query assignments: - C1 = «Nat.add» - C2 = «times» - X1 = tt - X2 = ff -Query assignments: - Y = global (indc «is_O») -derive.param1_trivial: wrong shape is_nest -. It does not look like a unary parametricity translation of an inductive with no indexes. -Query assignments: - C1 = «x» -empty_fields_t : positive -> Type - : positive -> Type -empty_fields : forall n : empty, empty_fields_t (empty_tag n) - : forall n : empty, empty_fields_t (empty_tag n) -empty_construct -: -forall p : positive, empty_fields_t p -> Datatypes.option empty - : forall p : positive, empty_fields_t p -> Datatypes.option empty -empty_constructP -: -forall n : empty, -empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n - : forall n : empty, - empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n -unit_fields_t : positive -> Type - : positive -> Type -unit_fields : forall n : unit, unit_fields_t (unit_tag n) - : forall n : unit, unit_fields_t (unit_tag n) -unit_construct -: -forall p : positive, unit_fields_t p -> Datatypes.option unit - : forall p : positive, unit_fields_t p -> Datatypes.option unit -unit_constructP -: -forall n : unit, -unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n - : forall n : unit, - unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n -peano_fields_t : positive -> Type - : positive -> Type -peano_fields : forall n : peano, peano_fields_t (peano_tag n) - : forall n : peano, peano_fields_t (peano_tag n) -peano_construct -: -forall p : positive, peano_fields_t p -> Datatypes.option peano - : forall p : positive, peano_fields_t p -> Datatypes.option peano -peano_constructP -: -forall n : peano, -peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n - : forall n : peano, - peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n -option_fields_t : Type -> positive -> Type - : Type -> positive -> Type -option_fields -: -forall (A : Type) (l : option A), option_fields_t A (option_tag A l) - : forall (A : Type) (l : option A), option_fields_t A (option_tag A l) -option_construct -: -forall (A : Type) (p : positive), -option_fields_t A p -> Datatypes.option (option A) - : forall (A : Type) (p : positive), - option_fields_t A p -> Datatypes.option (option A) -option_constructP -: -forall (A : Type) (l : option A), -option_construct A (option_tag A l) (option_fields A l) = Datatypes.Some l - : forall (A : Type) (l : option A), - option_construct A (option_tag A l) (option_fields A l) = - Datatypes.Some l -pair_fields_t : Type -> Type -> positive -> Type - : Type -> Type -> positive -> Type -pair_fields -: -forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) - : forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) -pair_construct -: -forall (A B : Type) (p : positive), -pair_fields_t A B p -> Datatypes.option (pair A B) - : forall (A B : Type) (p : positive), - pair_fields_t A B p -> Datatypes.option (pair A B) -pair_constructP -: -forall (A B : Type) (l : pair A B), -pair_construct A B (pair_tag A B l) (pair_fields A B l) = Datatypes.Some l - : forall (A B : Type) (l : pair A B), - pair_construct A B (pair_tag A B l) (pair_fields A B l) = - Datatypes.Some l -seq_fields_t : Type -> positive -> Type - : Type -> positive -> Type -seq_fields : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) - : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) -seq_construct -: -forall (A : Type) (p : positive), -seq_fields_t A p -> Datatypes.option (seq A) - : forall (A : Type) (p : positive), - seq_fields_t A p -> Datatypes.option (seq A) -seq_constructP -: -forall (A : Type) (l : seq A), -seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l - : forall (A : Type) (l : seq A), - seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l -rose_fields_t : Type -> positive -> Type - : Type -> positive -> Type -rose_fields : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) - : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) -rose_construct -: -forall (A : Type) (p : positive), -rose_fields_t A p -> Datatypes.option (rose A) - : forall (A : Type) (p : positive), - rose_fields_t A p -> Datatypes.option (rose A) -rose_constructP -: -forall (A : Type) (l : rose A), -rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l - : forall (A : Type) (l : rose A), - rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l -beta_fields_t : Type -> positive -> Type - : Type -> positive -> Type -beta_fields : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) - : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) -beta_construct -: -forall (A : Type) (p : positive), -beta_fields_t A p -> Datatypes.option (beta A) - : forall (A : Type) (p : positive), - beta_fields_t A p -> Datatypes.option (beta A) -beta_constructP -: -forall (A : Type) (l : beta A), -beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l - : forall (A : Type) (l : beta A), - beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l -large_fields_t : positive -> Type - : positive -> Type -large_fields : forall n : large, large_fields_t (large_tag n) - : forall n : large, large_fields_t (large_tag n) -large_construct -: -forall p : positive, large_fields_t p -> Datatypes.option large - : forall p : positive, large_fields_t p -> Datatypes.option large -large_constructP -: -forall n : large, -large_construct (large_tag n) (large_fields n) = Datatypes.Some n - : forall n : large, - large_construct (large_tag n) (large_fields n) = Datatypes.Some n -prim_int_fields_t : positive -> Type - : positive -> Type -prim_int_fields : forall n : prim_int, prim_int_fields_t (prim_int_tag n) - : forall n : prim_int, prim_int_fields_t (prim_int_tag n) -prim_int_construct -: -forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int - : forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int -prim_int_constructP -: -forall n : prim_int, -prim_int_construct (prim_int_tag n) (prim_int_fields n) = Datatypes.Some n - : forall n : prim_int, - prim_int_construct (prim_int_tag n) (prim_int_fields n) = - Datatypes.Some n -pa_record_fields_t : Type -> positive -> Type - : Type -> positive -> Type -pa_record_fields -: -forall (A : Type) (l : pa_record A), pa_record_fields_t A (pa_record_tag A l) - : forall (A : Type) (l : pa_record A), - pa_record_fields_t A (pa_record_tag A l) -pa_record_construct -: -forall (A : Type) (p : positive), -pa_record_fields_t A p -> Datatypes.option (pa_record A) - : forall (A : Type) (p : positive), - pa_record_fields_t A p -> Datatypes.option (pa_record A) -pa_record_constructP -: -forall (A : Type) (l : pa_record A), -pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = -Datatypes.Some l - : forall (A : Type) (l : pa_record A), - pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = - Datatypes.Some l -pr_record_fields_t : Type -> positive -> Type - : Type -> positive -> Type -pr_record_fields -: -forall (A : Type) (l : pr_record A), pr_record_fields_t A (pr_record_tag A l) - : forall (A : Type) (l : pr_record A), - pr_record_fields_t A (pr_record_tag A l) -pr_record_construct -: -forall (A : Type) (p : positive), -pr_record_fields_t A p -> Datatypes.option (pr_record A) - : forall (A : Type) (p : positive), - pr_record_fields_t A p -> Datatypes.option (pr_record A) -pr_record_constructP -: -forall (A : Type) (l : pr_record A), -pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = -Datatypes.Some l - : forall (A : Type) (l : pr_record A), - pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = - Datatypes.Some l -sigma_bool_fields_t : positive -> Type - : positive -> Type -sigma_bool_fields -: -forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) - : forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) -sigma_bool_construct -: -forall p : positive, sigma_bool_fields_t p -> Datatypes.option sigma_bool - : forall p : positive, - sigma_bool_fields_t p -> Datatypes.option sigma_bool -sigma_bool_constructP -: -forall l : sigma_bool, -sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = -Datatypes.Some l - : forall l : sigma_bool, - sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = - Datatypes.Some l -ord_fields_t : peano -> positive -> Type - : peano -> positive -> Type -ord_fields : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) - : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) -ord_construct -: -forall (n : peano) (p : positive), -ord_fields_t n p -> Datatypes.option (ord n) - : forall (n : peano) (p : positive), - ord_fields_t n p -> Datatypes.option (ord n) -ord_constructP +Inductive elpi.apps.derive.tests.test_param1.Coverage.is_unit +Inductive elpi.apps.derive.tests.test_param1.OtherTests.is_unit + (shorter name to refer to it in current context is OtherTests.is_unit) +(fun P : empty -> Prop => empty_induction P) : -forall (p : peano) (o : ord p), -ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o - : forall (p : peano) (o : ord p), - ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o -ord2_fields_t : peano -> positive -> Type - : peano -> positive -> Type -ord2_fields : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) - : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) -ord2_construct +forall (P : empty -> Prop) (x : empty), is_empty x -> P x + : forall (P : empty -> Prop) (x : empty), is_empty x -> P x +(fun P : unit -> Prop => unit_induction P) : -forall (n : peano) (p : positive), -ord2_fields_t n p -> Datatypes.option (ord2 n) - : forall (n : peano) (p : positive), - ord2_fields_t n p -> Datatypes.option (ord2 n) -ord2_constructP +forall P : unit -> Prop, P tt -> forall x : unit, is_unit x -> P x + : forall P : unit -> Prop, P tt -> forall x : unit, is_unit x -> P x +peano_induction : -forall (p : peano) (o : ord2 p), -ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o - : forall (p : peano) (o : ord2 p), - ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o -val_fields_t : positive -> Type - : positive -> Type -val_fields : forall i : val, val_fields_t (val_tag i) - : forall i : val, val_fields_t (val_tag i) -val_construct : forall p : positive, val_fields_t p -> Datatypes.option val - : forall p : positive, val_fields_t p -> Datatypes.option val -val_constructP +forall P : peano -> Type, +P Zero -> +(forall n : peano, P n -> P (Succ n)) -> forall x : peano, is_peano x -> P x + : forall P : peano -> Type, + P Zero -> + (forall n : peano, P n -> P (Succ n)) -> + forall x : peano, is_peano x -> P x +option_induction : -forall v : val, val_construct (val_tag v) (val_fields v) = Datatypes.Some v - : forall v : val, - val_construct (val_tag v) (val_fields v) = Datatypes.Some v -Query assignments: - Y = app - [global (indc «is_S»), app [global (indc «S»), global (indc «O»)], - app [global (indc «is_S»), global (indc «O»), global (indc «is_O»)]] -is_pred = -fun (n : nat) (Pn : is_nat n) => -match - Pn in (is_nat n0) return (is_nat match n0 with - | 0 => n - | S u => u - end) -with -| is_O => Pn -| is_S _ Pu => Pu -end - : forall n : nat, is_nat n -> is_nat (Nat.pred n) - -Arguments is_pred n%nat_scope Pn -is_pred : is_nat2nat Nat.pred - : is_nat2nat Nat.pred -is_predn : is_nat2nat predn - : is_nat2nat predn -is_add : is_nat2nat2nat Nat.add - : is_nat2nat2nat Nat.add -derive.param1_trivial: wrong shape is_vect A PA -. It does not look like a unary parametricity translation of an inductive with no indexes. -Inductive is_bla : forall H : nat, is_nat H -> bla H -> Type := - is_Bla : forall H : nat, is_nat H -> is_bla 0 is_O (Bla H) - | is_Blu : forall (n : nat) (Pn : is_nat n) (H : bla n), - is_bla n Pn H -> is_bla 1 (is_S 0 is_O) (Blu n H). - -Arguments is_bla _%nat_scope P_ s1 -Arguments is_Bla _%nat_scope P_ -Arguments is_Blu n%nat_scope Pn _ P_ -COQC tests/test_eqb.v -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx» -projSucc1 : peano -> peano -> peano - : peano -> peano -> peano -projSome1 : forall A : Type, A -> option A -> A - : forall A : Type, A -> option A -> A -projComma1 : forall A B : Type, A -> B -> pair A B -> A - : forall A B : Type, A -> B -> pair A B -> A -projComma2 : forall A B : Type, A -> B -> pair A B -> B - : forall A B : Type, A -> B -> pair A B -> B -projCons1 : forall A : Type, A -> seq A -> seq A -> A - : forall A : Type, A -> seq A -> seq A -> A -projCons2 : forall A : Type, A -> seq A -> seq A -> seq A - : forall A : Type, A -> seq A -> seq A -> seq A -projLeaf1 : forall A : Type, A -> rose A -> A - : forall A : Type, A -> rose A -> A -projNode1 : forall A : Type, seq (rose A) -> rose A -> seq (rose A) - : forall A : Type, seq (rose A) -> rose A -> seq (rose A) -projConsN1 : forall A : Type, A -> nest (pair A A) -> nest A -> A - : forall A : Type, A -> nest (pair A A) -> nest A -> A -projConsN2 +forall (A : Type) (PA : A -> Type) (P : option A -> Type), +P (None A) -> +(forall a : A, PA a -> P (Some A a)) -> +forall x : option A, is_option A PA x -> P x + : forall (A : Type) (PA : A -> Type) (P : option A -> Type), + P (None A) -> + (forall a : A, PA a -> P (Some A a)) -> + forall x : option A, is_option A PA x -> P x +pair_induction : -forall A : Type, A -> nest (pair A A) -> nest A -> nest (pair A A) - : forall A : Type, A -> nest (pair A A) -> nest A -> nest (pair A A) -projvia1 : forall A : Type, (A -> w A) -> w A -> A -> w A - : forall A : Type, (A -> w A) -> w A -> A -> w A -projVCons1 +forall (A : Type) (PA : A -> Type) (B : Type) (PB : B -> Type) + (P : pair A B -> Type), +(forall a : A, PA a -> forall b : B, PB b -> P (Comma A B a b)) -> +forall x : pair A B, is_pair A PA B PB x -> P x + : forall (A : Type) (PA : A -> Type) (B : Type) + (PB : B -> Type) (P : pair A B -> Type), + (forall a : A, PA a -> forall b : B, PB b -> P (Comma A B a b)) -> + forall x : pair A B, is_pair A PA B PB x -> P x +seq_induction : -forall (A : Type) (i : peano), -A -> forall j : peano, vect A j -> vect A i -> A - : forall (A : Type) (i : peano), - A -> forall j : peano, vect A j -> vect A i -> A -projVCons2 +forall (A : Type) (PA : A -> Type) (P : seq A -> Type), +P (Nil A) -> +(forall x : A, PA x -> forall xs : seq A, P xs -> P (Cons A x xs)) -> +forall l : seq A, is_seq A PA l -> P l + : forall (A : Type) (PA : A -> Type) (P : seq A -> Type), + P (Nil A) -> + (forall x : A, PA x -> forall xs : seq A, P xs -> P (Cons A x xs)) -> + forall l : seq A, is_seq A PA l -> P l +rose_induction : -forall (A : Type) (i : peano), -A -> forall j : peano, vect A j -> vect A i -> peano - : forall (A : Type) (i : peano), - A -> forall j : peano, vect A j -> vect A i -> peano -projVCons3 +forall (A : Type) (PA : A -> Type) (P : rose A -> Type), +(forall x : A, PA x -> P (Leaf A x)) -> +(forall l : seq (rose A), is_seq (rose A) P l -> P (Node A l)) -> +forall x : rose A, is_rose A PA x -> P x + : forall (A : Type) (PA : A -> Type) (P : rose A -> Type), + (forall x : A, PA x -> P (Leaf A x)) -> + (forall l : seq (rose A), is_seq (rose A) P l -> P (Node A l)) -> + forall x : rose A, is_rose A PA x -> P x +nest_induction : -forall (A : Type) (i : peano), -A -> forall j : peano, vect A j -> vect A i -> {w : peano & vect A w} - : forall (A : Type) (i : peano), - A -> forall j : peano, vect A j -> vect A i -> {w : peano & vect A w} -projbox1 : forall T : Type, T -> dyn -> Type - : forall T : Type, T -> dyn -> Type -projbox2 : forall T : Type, T -> dyn -> {T0 : Type & T0} - : forall T : Type, T -> dyn -> {T0 : Type & T0} -projEnvelope1 : forall A : Type, A -> A -> zeta A -> A - : forall A : Type, A -> A -> zeta A -> A -eq_refl : projEnvelope1 nat 1 1 (Envelope nat 0 1) = 0 - : projEnvelope1 nat 1 1 (Envelope nat 0 1) = 0 -projEnvelope2 : forall A : Type, A -> A -> zeta A -> A - : forall A : Type, A -> A -> zeta A -> A -eq_refl : projEnvelope2 nat 1 1 (Envelope nat 1 0) = 0 - : projEnvelope2 nat 1 1 (Envelope nat 1 0) = 0 -projRedex1 : forall A : Type, A -> beta A -> A - : forall A : Type, A -> beta A -> A -projWhy1 +forall P : forall A : Type, (A -> Type) -> nest A -> Type, +(forall (A : Type) (PA : A -> Type), P A PA (NilN A)) -> +(forall (A : Type) (PA : A -> Type) (x : A), + PA x -> + forall xs : nest (pair A A), + P (pair A A) (is_pair A PA A PA) xs -> P A PA (ConsN A x xs)) -> +forall (A : Type) (PA : A -> Type) (n : nest A), is_nest A PA n -> P A PA n + : forall P : forall A : Type, (A -> Type) -> nest A -> Type, + (forall (A : Type) (PA : A -> Type), P A PA (NilN A)) -> + (forall (A : Type) (PA : A -> Type) (x : A), + PA x -> + forall xs : nest (pair A A), + P (pair A A) (is_pair A PA A PA) xs -> P A PA (ConsN A x xs)) -> + forall (A : Type) (PA : A -> Type) (n : nest A), + is_nest A PA n -> P A PA n +w_induction : -forall n : peano, -match n with -| Zero => peano -| Succ _ => unit -end -> iota -> peano - : forall n : peano, - match n with - | Zero => peano - | Succ _ => unit - end -> iota -> peano -projWhy2 +forall (A : Type) (PA : A -> Type) (P : w A -> Type), +(forall f : A -> w A, (forall a : A, PA a -> P (f a)) -> P (via A f)) -> +forall x : w A, is_w A PA x -> P x + : forall (A : Type) (PA : A -> Type) (P : w A -> Type), + (forall f : A -> w A, (forall a : A, PA a -> P (f a)) -> P (via A f)) -> + forall x : w A, is_w A PA x -> P x +vect_induction : -forall n : peano, -match n with -| Zero => peano -| Succ _ => unit -end -> -iota -> {i : peano & match i with - | Zero => peano - | Succ _ => unit - end} - : forall n : peano, - match n with - | Zero => peano - | Succ _ => unit - end -> - iota -> - {i : peano & match i with - | Zero => peano - | Succ _ => unit - end} -projPI1 - : PrimInt63.int -> prim_int -> PrimInt63.int -projPF1 - : PrimFloat.float -> prim_float -> PrimFloat.float -projBuild_fo_record1 : peano -> unit -> fo_record -> peano - : peano -> unit -> fo_record -> peano -projBuild_fo_record2 : peano -> unit -> fo_record -> unit - : peano -> unit -> fo_record -> unit -projBuild_pa_record2 : forall A : Type, peano -> A -> pa_record A -> A - : forall A : Type, peano -> A -> pa_record A -> A -projBuild_pr_record2 : forall A : Type, peano -> A -> pr_record A -> A - : forall A : Type, peano -> A -> pr_record A -> A -COQC tests/test_bcongr.v -Query assignments: - PDb = [tc-instance (const «reali_is_fin_length») 0, - tc-instance (const «reali_is_vec_length») 0, - tc-instance (const «reali_is_predn») 0, - tc-instance (const «reali_is_plus'») 0, - tc-instance (const «reali_is_nat_S») 0, - tc-instance (const «reali_is_nat_O») 0, - tc-instance (const «reali_is_prim_float») 0, - tc-instance (const «reali_is_prim_float_PF») 0, - tc-instance (const «reali_is_nest_ConsN») 0, - tc-instance (const «reali_is_w_via») 0, - tc-instance (const «reali_is_val_V») 0, - tc-instance (const «reali_is_peano») 0, - tc-instance (const «reali_is_large») 0, - tc-instance (const «reali_is_empty») 0, - tc-instance (const «reali_is_iota_Why») 0, - tc-instance (const «reali_is_nat2nat2nat») 0, - tc-instance (const «reali_is_unit_tt») 0, - tc-instance (const «reali_is_nest_NilN») 0, - tc-instance (const «reali_is_prim_int») 0, - tc-instance (const «reali_is_vect_VCons») 0, - tc-instance (const «reali_is_large_K26») 0, - tc-instance (const «reali_is_large_K25») 0, - tc-instance (const «reali_is_large_K24») 0, - tc-instance (const «reali_is_large_K23») 0, - tc-instance (const «reali_is_large_K22») 0, - tc-instance (const «reali_is_large_K21») 0, - tc-instance (const «reali_is_large_K20») 0, - tc-instance (const «reali_is_large_K19») 0, - tc-instance (const «reali_is_large_K18») 0, - tc-instance (const «reali_is_large_K17») 0, - tc-instance (const «reali_is_large_K16») 0, - tc-instance (const «reali_is_large_K15») 0, - tc-instance (const «reali_is_large_K14») 0, - tc-instance (const «reali_is_large_K13») 0, - tc-instance (const «reali_is_large_K12») 0, - tc-instance (const «reali_is_large_K11») 0, - tc-instance (const «reali_is_large_K10») 0, - tc-instance (const «reali_is_eq_eq_refl») 0, - tc-instance (const «Coverage.reali_is_unit_tt») 0, - tc-instance (const «reali_is_large_K9») 0, - tc-instance (const «reali_is_large_K8») 0, - tc-instance (const «reali_is_large_K7») 0, - tc-instance (const «reali_is_large_K6») 0, - tc-instance (const «reali_is_large_K5») 0, - tc-instance (const «reali_is_large_K4») 0, - tc-instance (const «reali_is_large_K3») 0, - tc-instance (const «reali_is_large_K2») 0, - tc-instance (const «reali_is_large_K1») 0, - tc-instance (const «reali_is_seq_Cons») 0, - tc-instance (const «reali_is_ord_mkOrd») 0, - tc-instance (const «reali_is_peano_Zero») 0, - tc-instance (const «reali_is_peano_Succ») 0, - tc-instance (const «reali_is_fo_record») 0, - tc-instance (const «reali_is_vec_vcons») 0, - tc-instance (const «reali_is_quasidn») 0, - tc-instance (const «reali_is_vect_VNil») 0, - tc-instance (const «reali_is_seq_Nil») 0, - tc-instance (const «reali_is_zeta_Envelope») 0, - tc-instance (const «reali_is_list_cons») 0, - tc-instance (const «exports.reali_is_eq») 0, - tc-instance (const «reali_is_beta_Redex») 0, - tc-instance (const «reali_is_unit») 0, - tc-instance (const «reali_is_test») 0, - tc-instance (const «reali_is_prod») 0, - tc-instance (const «reali_is_pred») 0, - tc-instance (const «reali_is_list») 0, - tc-instance (const «reali_is_bool») 0, - tc-instance (const «reali_is_sigma_bool_Build_sigma_bool») 0, - tc-instance (const «reali_is_option_Some») 0, - tc-instance (const «reali_is_option_None») 0, - tc-instance (const «reali_is_box_peano») 0, - tc-instance (const «reali_is_nat2nat») 0, - tc-instance (const «reali_is_sigma_bool») 0, - tc-instance (const «reali_is_zeta») 0, - tc-instance (const «reali_is_vect») 0, - tc-instance (const «Coverage.reali_is_unit») 0, - tc-instance (const «reali_is_rose») 0, - tc-instance (const «reali_is_pair») 0, - tc-instance (const «reali_is_ord2») 0, - tc-instance (const «reali_is_nest») 0, - tc-instance (const «reali_is_iota») 0, - tc-instance (const «reali_is_enum») 0, - tc-instance (const «Coverage.reali_is_bool») 0, - tc-instance (const «reali_is_beta») 0, - tc-instance (const «reali_is_vec_length_type») 0, - tc-instance (const «reali_is_vec_length_rec») 0, - tc-instance (const «reali_is_pr_record») 0, - tc-instance (const «reali_is_rose_Node») 0, - tc-instance (const «reali_is_rose_Leaf») 0, - tc-instance (const «reali_is_rose_p_Nodep») 0, - tc-instance (const «reali_is_rose_p_Leafp») 0, - tc-instance (const «reali_is_eq») 0, - tc-instance (const «reali_is_is_list») 0, - tc-instance (const «reali_is_w») 0, - tc-instance (const «reali_is_vec_vnil») 0, - tc-instance (const «reali_is_dep_record_Build_dep_record») 0, - tc-instance (const «reali_is_pr_record_Build_pr_record») 0, - tc-instance (const «reali_is_rose_o_Nodeo») 0, - tc-instance (const «reali_is_rose_o_Leafo») 0, - tc-instance (const «reali_is_weirdn») 0, - tc-instance (const «reali_is_pair_Comma») 0, - tc-instance (const «reali_is_dep_record») 0, - tc-instance (const «reali_is_is_zero») 0, - tc-instance (const «reali_is_pa_record») 0, - tc-instance (const «reali_is_fin_FS») 0, - tc-instance (const «reali_is_fin_FO») 0, - tc-instance (const «reali_is_bool_true») 0, - tc-instance (const «reali_is_divmod») 0, - tc-instance (const «reali_is_prim_int_PI») 0, - tc-instance (const «reali_is_list_nil») 0, - tc-instance (const «reali_is_vec») 0, - tc-instance (const «reali_is_snd») 0, - tc-instance (const «reali_is_nat») 0, - tc-instance (const «reali_is_fst») 0, - tc-instance (const «reali_is_fin») 0, - tc-instance (const «reali_is_div») 0, - tc-instance (const «reali_is_bla») 0, - tc-instance (const «reali_is_add») 0, - tc-instance (const «reali_is_rose_p») 0, - tc-instance (const «reali_is_rose_o») 0, - tc-instance (const «reali_is_is_list_is_nil») 0, - tc-instance (const «reali_is_option») 0, - tc-instance (const «reali_is_is_leq») 0, - tc-instance (const «reali_is_bool_false») 0, - tc-instance (const «reali_is_prod_pair») 0, - tc-instance (const «Coverage.reali_is_bool_true») 0, - tc-instance (const «reali_is_val») 0, - tc-instance (const «reali_is_seq») 0, - tc-instance (const «reali_is_ord») 0, - tc-instance (const «reali_is_dyn») 0, - tc-instance (const «reali_is_is_list_is_cons») 0, - tc-instance (const «reali_is_fo_record_Build_fo_record») 0, - tc-instance (const «Coverage.reali_is_bool_false») 0, - tc-instance (const «reali_is_enum_E3») 0, - tc-instance (const «reali_is_enum_E2») 0, - tc-instance (const «reali_is_enum_E1») 0, - tc-instance (const «reali_is_dyn_box») 0, - tc-instance (const «exports.reali_is_eq_eq_refl») 0, - tc-instance (const «reali_is_box_peano_Box») 0, - tc-instance (const «reali_is_ord2_mkOrd2») 0, - tc-instance (const «reali_is_bla_Blu») 0, - tc-instance (const «reali_is_bla_Bla») 0, - tc-instance (const «reali_is_pa_record_Build_pa_record») 0] - Spilled_1 = indt «reali_db» -File "./tests/test_param1.v", line 158, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx2» +forall (A : Type) (PA : A -> Type) + (P : forall n : peano, is_peano n -> vect A n -> Type), +P Zero is_Zero (VNil A) -> +(forall a : A, + PA a -> + forall (n : peano) (nR : is_peano n) (v : vect A n), + P n nR v -> P (Succ n) (is_Succ n nR) (VCons A a n v)) -> +forall (l : peano) (lR : is_peano l) (x : vect A l), +is_vect A PA l lR x -> P l lR x + : forall (A : Type) (PA : A -> Type) + (P : forall n : peano, is_peano n -> vect A n -> Type), + P Zero is_Zero (VNil A) -> + (forall a : A, + PA a -> + forall (n : peano) (nR : is_peano n) (v : vect A n), + P n nR v -> P (Succ n) (is_Succ n nR) (VCons A a n v)) -> + forall (l : peano) (lR : is_peano l) (x : vect A l), + is_vect A PA l lR x -> P l lR x Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx3» -empty_eqb : eq_test2 empty empty - : eq_test2 empty empty -unit_eqb : eq_test2 unit unit - : eq_test2 unit unit -peano_eqb : eq_test2 peano peano - : eq_test2 peano peano -option_eqb : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) - : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) -pair_eqb -: -forall A : Type, -eq_test2 A A -> -forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) - : forall A : Type, - eq_test2 A A -> - forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) -seq_eqb : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) - : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) -rose_eqb : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) - : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) -beta_eqb : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) - : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) -prim_int_eqb : eq_test2 prim_int prim_int - : eq_test2 prim_int prim_int -fo_record_eqb : eq_test2 fo_record fo_record - : eq_test2 fo_record fo_record -pa_record_eqb +dyn_induction : -forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) - : forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) -pr_record_eqb +forall P : dyn -> Type, +(forall (T : Type) (PT : T -> Type) (t : T), PT t -> P (box T t)) -> +forall x : dyn, is_dyn x -> P x + : forall P : dyn -> Type, + (forall (T : Type) (PT : T -> Type) (t : T), PT t -> P (box T t)) -> + forall x : dyn, is_dyn x -> P x + C1 = «Nat.add» + C2 = «times» + X1 = tt + X2 = ff +zeta_induction : -forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) - : forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) -enum_eqb : eq_test2 enum enum - : eq_test2 enum enum -sigma_bool_eqb : eq_test2 sigma_bool sigma_bool - : eq_test2 sigma_bool sigma_bool -ord_eqb : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) - : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) -ord2_eqb : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) - : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) -val_eqb : eq_test2 val val - : eq_test2 val val -alias_eqb : eq_test2 alias alias - : eq_test2 alias alias -File "./tests/test_param1.v", line 176, characters 0-66: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +forall (A : Type) (PA : A -> Type) (P : zeta A -> Type), +(forall a : A, PA a -> forall c : A, PA c -> P (Envelope A a c)) -> +forall x : zeta A, is_zeta A PA x -> P x + : forall (A : Type) (PA : A -> Type) (P : zeta A -> Type), + (forall a : A, PA a -> forall c : A, PA c -> P (Envelope A a c)) -> + forall x : zeta A, is_zeta A PA x -> P x +iota_induction + : forall P : iota -> Type, + (forall (n : peano) (Pn : is_peano n) + (a : match n with + | Zero => peano + | Succ _ => unit + end), + match + Pn in (is_peano n0) + return (match n0 with + | Zero => peano + | Succ _ => unit + end -> Type) + with + | is_Zero => is_peano + | is_Succ _ _ => is_unit + end a -> P (Why n a)) -> forall s1 : iota, is_iota s1 -> P s1 [p 1, p 2, p 3, p 4, p 5, p 6, p 7, p 8, p 9, p 10, p 11, p 12, p 13, p 14, p 15, p 16, p 17, p 18, p 19, p 20, p 21, p 22, p 23, p 24, p 25, p 26, p 27, p 28, p 29, p 30, p 31, p 32, p 33, p 34, p 35, p 36, p 37, @@ -10687,796 +11157,6 @@ p 3689, p 3690, p 3691, p 3692, p 3693, p 3694, p 3695, p 3696, p 3697, p 3698, p 3699, p 3700, p 3701, p 3702, p 3703, p 3704, p 3705, p 3706, p 3707, p 3708, p 3709, p 3710] -COQC tests/test_param1_functor.v -COQC tests/test_param1_congr.v -Query assignments: - _uvk_1_ = X0 - _uvk_2_ = X1 -Syntactic constraints: - evar (X1) (X2) (X1) /* suspended on X1 */ - evar X3 (sort (typ «elpi.tests.test_API2.6»)) (X2) /* suspended on X3, X2 */ - evar (X0) (X4) (X0) /* suspended on X0 */ - evar X5 (sort (typ «elpi.tests.test_API2.5»)) (X4) /* suspended on X5, X4 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API2.6 elpi.tests.test_API2.5} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α4 - α5 -WEAK CONSTRAINTS: - - -Non-discriminated database -Unfoldable variable definitions: all -Unfoldable constant definitions: all -Cut: emp -For any goal -> -For xeq -> exact xxx(level 0, pattern 0 = _, id 0) - -Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3354 <= Set -unit_bcongr_tt : reflect (tt = tt) true - : reflect (tt = tt) true -peano_bcongr_Zero : reflect (Zero = Zero) true - : reflect (Zero = Zero) true -peano_bcongr_Succ -: -forall (x y : peano) (b : bool), -reflect (x = y) b -> reflect (Succ x = Succ y) b - : forall (x y : peano) (b : bool), - reflect (x = y) b -> reflect (Succ x = Succ y) b -option_bcongr_None : forall A : Type, reflect (None A = None A) true - : forall A : Type, reflect (None A = None A) true -option_bcongr_Some -: -forall (A : Type) (x y : A) (b : bool), -reflect (x = y) b -> reflect (Some A x = Some A y) b - : forall (A : Type) (x y : A) (b : bool), - reflect (x = y) b -> reflect (Some A x = Some A y) b -pair_bcongr_Comma -: -forall (A B : Type) (x1 x2 : A) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : B) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect (Comma A B x1 y1 = Comma A B x2 y2) (b1 && b2) - : forall (A B : Type) (x1 x2 : A) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : B) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect (Comma A B x1 y1 = Comma A B x2 y2) (b1 && b2) -seq_bcongr_Nil : forall A : Type, reflect (Nil A = Nil A) true - : forall A : Type, reflect (Nil A = Nil A) true -seq_bcongr_Cons -: -forall (A : Type) (x y : A) (b1 : bool), -reflect (x = y) b1 -> -forall (xs ys : seq A) (b2 : bool), -reflect (xs = ys) b2 -> reflect (Cons A x xs = Cons A y ys) (b1 && b2) - : forall (A : Type) (x y : A) (b1 : bool), - reflect (x = y) b1 -> - forall (xs ys : seq A) (b2 : bool), - reflect (xs = ys) b2 -> reflect (Cons A x xs = Cons A y ys) (b1 && b2) -rose_bcongr_Leaf -: -forall (A : Type) (x y : A) (b : bool), -reflect (x = y) b -> reflect (Leaf A x = Leaf A y) b - : forall (A : Type) (x y : A) (b : bool), - reflect (x = y) b -> reflect (Leaf A x = Leaf A y) b -rose_bcongr_Node -: -forall (A : Type) (l1 l2 : seq (rose A)) (b : bool), -reflect (l1 = l2) b -> reflect (Node A l1 = Node A l2) b - : forall (A : Type) (l1 l2 : seq (rose A)) (b : bool), - reflect (l1 = l2) b -> reflect (Node A l1 = Node A l2) b -nest_bcongr_NilN : forall A : Type, reflect (NilN A = NilN A) true - : forall A : Type, reflect (NilN A = NilN A) true -nest_bcongr_ConsN -: -forall (A : Type) (x y : A) (b1 : bool), -reflect (x = y) b1 -> -forall (xs ys : nest (pair A A)) (b2 : bool), -reflect (xs = ys) b2 -> reflect (ConsN A x xs = ConsN A y ys) (b1 && b2) - : forall (A : Type) (x y : A) (b1 : bool), - reflect (x = y) b1 -> - forall (xs ys : nest (pair A A)) (b2 : bool), - reflect (xs = ys) b2 -> - reflect (ConsN A x xs = ConsN A y ys) (b1 && b2) -w_bcongr_via -: -forall (A : Type) (f g : A -> w A) (b : bool), -reflect (f = g) b -> reflect (via A f = via A g) b - : forall (A : Type) (f g : A -> w A) (b : bool), - reflect (f = g) b -> reflect (via A f = via A g) b -zeta_bcongr_Envelope -: -forall (A : Type) (x1 x2 : A) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : A) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect (Envelope A x1 y1 = Envelope A x2 y2) (b1 && b2) - : forall (A : Type) (x1 x2 : A) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : A) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect (Envelope A x1 y1 = Envelope A x2 y2) (b1 && b2) -beta_bcongr_Redex -: -forall (A : Type) (x y : A) (b : bool), -reflect (x = y) b -> reflect (Redex A x = Redex A y) b - : forall (A : Type) (x y : A) (b : bool), - reflect (x = y) b -> reflect (Redex A x = Redex A y) b -prim_int_bcongr_PI -: -forall (x y : PrimInt63.int) (b : bool), -reflect (x = y) b -> reflect (PI x = PI y) b - : forall (x y : PrimInt63.int) (b : bool), - reflect (x = y) b -> reflect (PI x = PI y) b -prim_float_bcongr_PF -: -forall (x y : PrimFloat.float) (b : bool), -reflect (x = y) b -> reflect (PF x = PF y) b - : forall (x y : PrimFloat.float) (b : bool), - reflect (x = y) b -> reflect (PF x = PF y) b -fo_record_bcongr_Build_fo_record -: -forall (x1 x2 : peano) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : unit) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect ({| f1 := x1; f2 := y1 |} = {| f1 := x2; f2 := y2 |}) (b1 && b2) - : forall (x1 x2 : peano) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : unit) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect ({| f1 := x1; f2 := y1 |} = {| f1 := x2; f2 := y2 |}) - (b1 && b2) -pa_record_bcongr_Build_pa_record -: -forall (A : Type) (x1 x2 : peano) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : A) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect ({| f3 := x1; f4 := y1 |} = {| f3 := x2; f4 := y2 |}) (b1 && b2) - : forall (A : Type) (x1 x2 : peano) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : A) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect ({| f3 := x1; f4 := y1 |} = {| f3 := x2; f4 := y2 |}) - (b1 && b2) -pr_record_bcongr_Build_pr_record -: -forall (A : Type) (x1 x2 : peano) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : A) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect ({| pf3 := x1; pf4 := y1 |} = {| pf3 := x2; pf4 := y2 |}) (b1 && b2) - : forall (A : Type) (x1 x2 : peano) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : A) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect ({| pf3 := x1; pf4 := y1 |} = {| pf3 := x2; pf4 := y2 |}) - (b1 && b2) -enum_bcongr_E1 : reflect (E1 = E1) true - : reflect (E1 = E1) true -enum_bcongr_E2 : reflect (E2 = E2) true - : reflect (E2 = E2) true -enum_bcongr_E3 : reflect (E3 = E3) true - : reflect (E3 = E3) true -COQC tests/test_eqK.v -Query assignments: - _uvk_19_ = «elpi.tests.test_API2.7» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API2.7} -UNDEFINED UNIVERSES: - elpi.tests.test_API2.7 -SORTS: - -WEAK CONSTRAINTS: - - -Skipping derivation map on indt «nat» since it has been already run -Derivation lens on indt «nat» -Derivation lens on indt «nat» failed, continuing -Skipping derivation param1 on indt «nat» since it has been already run -Skipping derivation param2 on indt «nat» since it has been already run -Skipping derivation tag on indt «nat» since it has been already run -Skipping derivation eqType_ast on indt «nat» since it has been already run -Derivation projK on indt «nat» -congr_is_tt : is_tt = is_tt - : is_tt = is_tt -congr_is_Zero : is_Zero = is_Zero - : is_Zero = is_Zero -congr_is_Succ -: -forall (x : peano) (p1 p2 : is_peano x), -p1 = p2 -> is_Succ x p1 = is_Succ x p2 - : forall (x : peano) (p1 p2 : is_peano x), - p1 = p2 -> is_Succ x p1 = is_Succ x p2 -congr_is_None -: -forall (A : Type) (PA : A -> Type), is_None A PA = is_None A PA - : forall (A : Type) (PA : A -> Type), is_None A PA = is_None A PA -Derivation projK on indt «nat» took 0.004858 -Derivation isK on indt «nat» -congr_is_Some -: -forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), -p1 = p2 -> is_Some A PA x p1 = is_Some A PA x p2 - : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), - p1 = p2 -> is_Some A PA x p1 = is_Some A PA x p2 -congr_is_Comma -: -forall (A : Type) (PA : A -> Type) (B : Type) (PB : B -> Type) - (x : A) (p1 p2 : PA x), -p1 = p2 -> -forall (y : B) (q1 q2 : PB y), -q1 = q2 -> is_Comma A PA B PB x p1 y q1 = is_Comma A PA B PB x p2 y q2 - : forall (A : Type) (PA : A -> Type) (B : Type) - (PB : B -> Type) (x : A) (p1 p2 : PA x), - p1 = p2 -> - forall (y : B) (q1 q2 : PB y), - q1 = q2 -> is_Comma A PA B PB x p1 y q1 = is_Comma A PA B PB x p2 y q2 -congr_is_Nil : forall (A : Type) (PA : A -> Type), is_Nil A PA = is_Nil A PA - : forall (A : Type) (PA : A -> Type), is_Nil A PA = is_Nil A PA -Derivation isK on indt «nat» took 0.008094 -Derivation eq on indt «nat» -congr_is_Cons -: -forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), -p1 = p2 -> -forall (y : seq A) (q1 q2 : is_seq A PA y), -q1 = q2 -> is_Cons A PA x p1 y q1 = is_Cons A PA x p2 y q2 - : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), - p1 = p2 -> - forall (y : seq A) (q1 q2 : is_seq A PA y), - q1 = q2 -> is_Cons A PA x p1 y q1 = is_Cons A PA x p2 y q2 -congr_is_Leaf -: -forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), -p1 = p2 -> is_Leaf A PA x p1 = is_Leaf A PA x p2 - : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), - p1 = p2 -> is_Leaf A PA x p1 = is_Leaf A PA x p2 -congr_is_Node -: -forall (A : Type) (PA : A -> Type) (x : seq (rose A)) - (p1 p2 : is_seq (rose A) (is_rose A PA) x), -p1 = p2 -> is_Node A PA x p1 = is_Node A PA x p2 - : forall (A : Type) (PA : A -> Type) (x : seq (rose A)) - (p1 p2 : is_seq (rose A) (is_rose A PA) x), - p1 = p2 -> is_Node A PA x p1 = is_Node A PA x p2 -congr_is_via -: -forall (A : Type) (PA : A -> Type) (x : A -> w A) - (p1 p2 : forall H : A, PA H -> is_w A PA (x H)), -p1 = p2 -> is_via A PA x p1 = is_via A PA x p2 - : forall (A : Type) (PA : A -> Type) (x : A -> w A) - (p1 p2 : forall H : A, PA H -> is_w A PA (x H)), - p1 = p2 -> is_via A PA x p1 = is_via A PA x p2 -Derivation eq on indt «nat» took 0.008249 -Derivation invert on indt «nat» -congr_is_VNil -: -forall (A : Type) (PA : A -> Type), is_VNil A PA = is_VNil A PA - : forall (A : Type) (PA : A -> Type), is_VNil A PA = is_VNil A PA -congr_is_Envelope -: -forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), -p1 = p2 -> -forall (y : A) (q1 q2 : PA y), -q1 = q2 -> is_Envelope A PA x p1 y q1 = is_Envelope A PA x p2 y q2 - : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), - p1 = p2 -> - forall (y : A) (q1 q2 : PA y), - q1 = q2 -> is_Envelope A PA x p1 y q1 = is_Envelope A PA x p2 y q2 -congr_is_Redex -: -forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), -p1 = p2 -> is_Redex A PA x p1 = is_Redex A PA x p2 - : forall (A : Type) (PA : A -> Type) (x : A) (p1 p2 : PA x), - p1 = p2 -> is_Redex A PA x p1 = is_Redex A PA x p2 -congr_is_PI - : forall (x : PrimInt63.int) (p1 p2 : is_uint63 x), - p1 = p2 -> is_PI x p1 = is_PI x p2 -congr_is_PF - : forall (x : PrimFloat.float) (p1 p2 : is_float64 x), - p1 = p2 -> is_PF x p1 = is_PF x p2 -congr_is_Build_fo_record -: -forall (n : peano) (p1 p2 : is_peano n), -p1 = p2 -> -forall (b : unit) (q1 q2 : is_unit b), -q1 = q2 -> is_Build_fo_record n p1 b q1 = is_Build_fo_record n p2 b q2 - : forall (n : peano) (p1 p2 : is_peano n), - p1 = p2 -> - forall (b : unit) (q1 q2 : is_unit b), - q1 = q2 -> is_Build_fo_record n p1 b q1 = is_Build_fo_record n p2 b q2 -Derivation invert on indt «nat» took 0.010972 -Skipping derivation lens_laws on indt «nat» since it has been already run -Skipping derivation param1_congr on indt «nat» -since it has been already run -congr_is_Build_pa_record -: -forall (A : Type) (PA : A -> Type) (n : peano) (p1 p2 : is_peano n), -p1 = p2 -> -forall (b : A) (q1 q2 : PA b), -q1 = q2 -> -is_Build_pa_record A PA n p1 b q1 = is_Build_pa_record A PA n p2 b q2 - : forall (A : Type) (PA : A -> Type) (n : peano) (p1 p2 : is_peano n), - p1 = p2 -> - forall (b : A) (q1 q2 : PA b), - q1 = q2 -> - is_Build_pa_record A PA n p1 b q1 = is_Build_pa_record A PA n p2 b q2 -Skipping derivation param1_inhab on indt «nat» -since it has been already run -Skipping derivation param1_functor on indt «nat» -since it has been already run -Skipping derivation fields on indt «nat» since it has been already run -Derivation bcongr on indt «nat» -congr_is_Build_pr_record -: -forall (A : Type) (pr : A -> Type) (n : peano) (p1 p2 : is_peano n), -p1 = p2 -> -forall (b : A) (q1 q2 : pr b), -q1 = q2 -> -is_Build_pr_record A pr n p1 b q1 = is_Build_pr_record A pr n p2 b q2 - : forall (A : Type) (pr : A -> Type) (n : peano) (p1 p2 : is_peano n), - p1 = p2 -> - forall (b : A) (q1 q2 : pr b), - q1 = q2 -> - is_Build_pr_record A pr n p1 b q1 = is_Build_pr_record A pr n p2 b q2 -congr_is_E1 : is_E1 = is_E1 - : is_E1 = is_E1 -Derivation bcongr on indt «nat» took 0.010529 -Derivation idx2inv on indt «nat» -Derivation idx2inv on indt «nat» failed, continuing -Skipping derivation param1_trivial on indt «nat» -since it has been already run -Skipping derivation induction on indt «nat» since it has been already run -Skipping derivation eqb on indt «nat» since it has been already run -Derivation eqK on indt «nat» -Derivation eqK on indt «nat» took 0.011844 -Skipping derivation eqbcorrect on indt «nat» since it has been already run -Derivation eqcorrect on indt «nat» -Derivation eqcorrect on indt «nat» took 0.004494 -Skipping derivation eqbOK on indt «nat» since it has been already run -Derivation eqOK on indt «nat» -Derivation eqOK on indt «nat» took 0.003941 -nat_eqb : nat -> nat -> bool - : nat -> nat -> bool -is_nat : nat -> Type - : nat -> Type -is_nat_inhab : (forall x : nat, is_nat x) - : forall x : nat, is_nat x -is_nat_functor : (forall x : nat, is_nat x -> is_nat x) - : forall x : nat, is_nat x -> is_nat x -nat_induction - : (forall P : nat -> Type, - P 0 -> - (forall n : nat, P n -> P (S n)) -> forall x : nat, is_nat x -> P x) - : forall P : nat -> Type, - P 0 -> - (forall n : nat, P n -> P (S n)) -> forall x : nat, is_nat x -> P x -nat_tag : nat -> BinNums.positive - : nat -> BinNums.positive -nat_fields_t : BinNums.positive -> Type - : BinNums.positive -> Type -nat_fields : (forall n : nat, nat_fields_t (nat_tag n)) - : forall n : nat, nat_fields_t (nat_tag n) -nat_construct : (forall p : BinNums.positive, nat_fields_t p -> option nat) - : forall p : BinNums.positive, nat_fields_t p -> option nat -nat_constructP - : (forall n : nat, nat_construct (nat_tag n) (nat_fields n) = Some n) - : forall n : nat, nat_construct (nat_tag n) (nat_fields n) = Some n -nat_eqb : nat -> nat -> bool - : nat -> nat -> bool -nat_eqb_correct - : forall x : nat, eqb_correct_on nat_eqb x -nat_eqb_refl - : forall x : nat, eqb_refl_on nat_eqb x -COQC tests/test_param1_trivial.v -list_map : (forall A B : Type, (A -> B) -> list A -> list B) - : forall A B : Type, (A -> B) -> list A -> list B -is_nil : (forall (A : Type) (P : A -> Type), is_list A P nil) - : forall (A : Type) (P : A -> Type), is_list A P nil -is_cons - : (forall (A : Type) (P : A -> Type) (x : A), - P x -> forall tl : list A, is_list A P tl -> is_list A P (x :: tl)) - : forall (A : Type) (P : A -> Type) (x : A), - P x -> forall tl : list A, is_list A P tl -> is_list A P (x :: tl) -is_list_functor - : (forall (A : Type) (P Q : A -> Type), - (forall x : A, P x -> Q x) -> - forall l : list A, is_list A P l -> is_list A Q l) - : forall (A : Type) (P Q : A -> Type), - (forall x : A, P x -> Q x) -> - forall l : list A, is_list A P l -> is_list A Q l -list_induction - : (forall (A : Type) (PA : A -> Type) (P : list A -> Type), - P nil -> - (forall x : A, PA x -> forall xs : list A, P xs -> P (x :: xs)%list) -> - forall l : list A, is_list A PA l -> P l) - : forall (A : Type) (PA : A -> Type) (P : list A -> Type), - P nil -> - (forall x : A, PA x -> forall xs : list A, P xs -> P (x :: xs)%list) -> - forall l : list A, is_list A PA l -> P l -list_tag : (forall A : Type, list A -> BinNums.positive) - : forall A : Type, list A -> BinNums.positive -list_fields_t : Type -> BinNums.positive -> Type - : Type -> BinNums.positive -> Type -list_fields - : (forall (A : Type) (l : list A), list_fields_t A (list_tag A l)) - : forall (A : Type) (l : list A), list_fields_t A (list_tag A l) -list_construct - : (forall (A : Type) (p : BinNums.positive), - list_fields_t A p -> option (list A)) - : forall (A : Type) (p : BinNums.positive), - list_fields_t A p -> option (list A) -list_constructP - : (forall (A : Type) (l : list A), - list_construct A (list_tag A l) (list_fields A l) = Some l) - : forall (A : Type) (l : list A), - list_construct A (list_tag A l) (list_fields A l) = Some l -list_eqb : (forall A : Type, (A -> A -> bool) -> list A -> list A -> bool) - : forall A : Type, (A -> A -> bool) -> list A -> list A -> bool -list_eqb_correct - : forall (a : Type) (eqA : a -> a -> bool), - eqb_correct eqA -> - forall x : list a, eqb_correct_on (list_eqb a eqA) x -list_eqb_refl - : forall (a : Type) (eqA : a -> a -> bool), - eqb_reflexive eqA -> forall x : list a, eqb_refl_on (list_eqb a eqA) x -Query assignments: - GR = const const EXN PRINTING: Not_found - T = «elpi.tests.test_API2.T» -is_empty_functor : func is_empty - : func is_empty -is_unit_functor : func is_unit - : func is_unit -is_peano_functor : func is_peano - : func is_peano -is_option_functor : func1 is_option - : func1 is_option -is_pair_functor : func2 is_pair - : func2 is_pair -is_seq_functor : func1 is_seq - : func1 is_seq -is_rose_functor : func1 is_rose - : func1 is_rose -is_vect_functor -: -forall (A : Type) (P Q : A -> Type), -(forall y : A, P y -> Q y) -> -forall (i : peano) (p : is_peano i) (v : vect A i), -is_vect A P i p v -> is_vect A Q i p v - : forall (A : Type) (P Q : A -> Type), - (forall y : A, P y -> Q y) -> - forall (i : peano) (p : is_peano i) (v : vect A i), - is_vect A P i p v -> is_vect A Q i p v -is_dyn_functor : func is_dyn - : func is_dyn -is_zeta_functor : func1 is_zeta - : func1 is_zeta -is_beta_functor : func1 is_beta - : func1 is_beta -is_iota_functor : func is_iota - : func is_iota -is_large_functor : func is_large - : func is_large -is_prim_int_functor : func is_prim_int - : func is_prim_int -is_prim_float_functor : func is_prim_float - : func is_prim_float -is_fo_record_functor : func is_fo_record - : func is_fo_record -is_pa_record_functor : func1 is_pa_record - : func1 is_pa_record -is_pr_record_functor : func1 is_pr_record - : func1 is_pr_record -is_enum_functor : func is_enum - : func is_enum -is_ord_functor : forall (n : peano) (pn : is_peano n), func (is_ord n pn) - : forall (n : peano) (pn : is_peano n), func (is_ord n pn) -is_ord2_functor : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) - : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) -is_val_functor : func is_val - : func is_val -COQC tests/test_induction.v -Finished transaction in 15.191 secs (15.134u,0.023s) (successful) -eq_axiom_tt : eq_axiom_at unit unit_eq tt - : eq_axiom_at unit unit_eq tt -eq_axiom_Zero : eq_axiom_at peano peano_eq Zero - : eq_axiom_at peano peano_eq Zero -eq_axiom_Succ -: -forall y : peano, -eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) - : forall y : peano, - eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) -eq_axiom_None -: -forall (A : Type) (f : eq_test A), -eq_axiom_at (option A) (option_eq A f) (None A) - : forall (A : Type) (f : eq_test A), - eq_axiom_at (option A) (option_eq A f) (None A) -eq_axiom_Some -: -forall (A : Type) (f : eq_test A) (x : A), -eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) - : forall (A : Type) (f : eq_test A) (x : A), - eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) -eq_axiom_Comma -: -forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), -eq_axiom_at A f x -> -forall y : B, -eq_axiom_at B g y -> eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) - : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), - eq_axiom_at A f x -> - forall y : B, - eq_axiom_at B g y -> - eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) -eq_axiom_Nil -: -forall (A : Type) (f : eq_test A), eq_axiom_at (seq A) (seq_eq A f) (Nil A) - : forall (A : Type) (f : eq_test A), - eq_axiom_at (seq A) (seq_eq A f) (Nil A) -eq_axiom_Cons -: -forall (A : Type) (f : eq_test A) (x : A), -eq_axiom_at A f x -> -forall xs : seq A, -eq_axiom_at (seq A) (seq_eq A f) xs -> -eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) - : forall (A : Type) (f : eq_test A) (x : A), - eq_axiom_at A f x -> - forall xs : seq A, - eq_axiom_at (seq A) (seq_eq A f) xs -> - eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) -eq_axiom_Leaf -: -forall (A : Type) (f : eq_test A) (a : A), -eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) - : forall (A : Type) (f : eq_test A) (a : A), - eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) -eq_axiom_Node -: -forall (A : Type) (f : eq_test A) (l : seq (rose A)), -eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> -eq_axiom_at (rose A) (rose_eq A f) (Node A l) - : forall (A : Type) (f : eq_test A) (l : seq (rose A)), - eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> - eq_axiom_at (rose A) (rose_eq A f) (Node A l) -eq_axiom_Envelope - : forall (Sender : Type) (f : eq_test Sender) (x : Sender), - eq_axiom_at Sender f x -> - forall x0 : Sender, - eq_axiom_at Sender f x0 -> - forall x1 : zeta Sender, - eq_axiom_on (zeta Sender) (zeta_eq Sender f) (Envelope Sender x x0) x1 -eq_axiom_Redex - : forall (A : Type) (f : eq_test A) (x : A), - eq_axiom_at A f x -> - forall x0 : beta A, eq_axiom_on (beta A) (beta_eq A f) (Redex A x) x0 -eq_axiom_PI - : forall x : PrimInt63.int, - eq_axiom_at PrimInt63.int PrimInt63.eqb x -> - forall x0 : prim_int, eq_axiom_on prim_int prim_int_eq (PI x) x0 -eq_axiom_PF - : forall x : PrimFloat.float, - eq_axiom_at PrimFloat.float PrimFloat.eqb x -> - forall x0 : prim_float, eq_axiom_on prim_float prim_float_eq (PF x) x0 -eq_axiom_Build_fo_record -: -forall x : peano, -eq_axiom_at peano peano_eq x -> -forall y : unit, -eq_axiom_at unit unit_eq y -> -eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} - : forall x : peano, - eq_axiom_at peano peano_eq x -> - forall y : unit, - eq_axiom_at unit unit_eq y -> - eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} -eq_axiom_Build_pa_record -: -forall (A : Type) (f : eq_test A) (x : peano), -eq_axiom_at peano peano_eq x -> -forall y : A, -eq_axiom_at A f y -> -eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} - : forall (A : Type) (f : eq_test A) (x : peano), - eq_axiom_at peano peano_eq x -> - forall y : A, - eq_axiom_at A f y -> - eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} -eq_axiom_Build_pr_record -: -forall (A : Type) (f : eq_test A) (x : peano), -eq_axiom_at peano peano_eq x -> -forall y : A, -eq_axiom_at A f y -> -eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} - : forall (A : Type) (f : eq_test A) (x : peano), - eq_axiom_at peano peano_eq x -> - forall y : A, - eq_axiom_at A f y -> - eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} -eq_axiom_E1 : eq_axiom_at enum enum_eq E1 - : eq_axiom_at enum enum_eq E1 -eq_axiom_E2 : eq_axiom_at enum enum_eq E2 - : eq_axiom_at enum enum_eq E2 -eq_axiom_E3 : eq_axiom_at enum enum_eq E3 - : eq_axiom_at enum enum_eq E3 -Finished transaction in 0.26 secs (0.26u,0.s) (successful) -«elpi.tests.test_API2.G» -Query assignments: - F = «elpi.tests.test_API2.F» - G = «elpi.tests.test_API2.G» - X = «elpi.tests.test_API2.X» -Module G : Sig Definition id : X.T -> X.T. End := (F X) - -«elpi.tests.test_API2.H» -Query assignments: - F = «elpi.tests.test_API2.F» - H = «elpi.tests.test_API2.H» - X = «elpi.tests.test_API2.X» -Module H : Sig Definition id : nat -> nat. End := (F X) - -Query assignments: - GR = const const EXN PRINTING: Not_found - T = «elpi.tests.test_API2.T» -Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End -«elpi.tests.test_API2.GT» -Query assignments: - F = «elpi.tests.test_API2.FT» - G = «elpi.tests.test_API2.GT» - X = «elpi.tests.test_API2.X» -Module Type GT = Sig Parameter idT : X.T -> X.T. End -Inductive elpi.apps.derive.tests.test_param1.Coverage.is_unit -Inductive elpi.apps.derive.tests.test_param1.OtherTests.is_unit - (shorter name to refer to it in current context is OtherTests.is_unit) -(fun P : empty -> Prop => empty_induction P) -: -forall (P : empty -> Prop) (x : empty), is_empty x -> P x - : forall (P : empty -> Prop) (x : empty), is_empty x -> P x -(fun P : unit -> Prop => unit_induction P) -: -forall P : unit -> Prop, P tt -> forall x : unit, is_unit x -> P x - : forall P : unit -> Prop, P tt -> forall x : unit, is_unit x -> P x -peano_induction -: -forall P : peano -> Type, -P Zero -> -(forall n : peano, P n -> P (Succ n)) -> forall x : peano, is_peano x -> P x - : forall P : peano -> Type, - P Zero -> - (forall n : peano, P n -> P (Succ n)) -> - forall x : peano, is_peano x -> P x -option_induction -: -forall (A : Type) (PA : A -> Type) (P : option A -> Type), -P (None A) -> -(forall a : A, PA a -> P (Some A a)) -> -forall x : option A, is_option A PA x -> P x - : forall (A : Type) (PA : A -> Type) (P : option A -> Type), - P (None A) -> - (forall a : A, PA a -> P (Some A a)) -> - forall x : option A, is_option A PA x -> P x -pair_induction -: -forall (A : Type) (PA : A -> Type) (B : Type) (PB : B -> Type) - (P : pair A B -> Type), -(forall a : A, PA a -> forall b : B, PB b -> P (Comma A B a b)) -> -forall x : pair A B, is_pair A PA B PB x -> P x - : forall (A : Type) (PA : A -> Type) (B : Type) - (PB : B -> Type) (P : pair A B -> Type), - (forall a : A, PA a -> forall b : B, PB b -> P (Comma A B a b)) -> - forall x : pair A B, is_pair A PA B PB x -> P x -seq_induction -: -forall (A : Type) (PA : A -> Type) (P : seq A -> Type), -P (Nil A) -> -(forall x : A, PA x -> forall xs : seq A, P xs -> P (Cons A x xs)) -> -forall l : seq A, is_seq A PA l -> P l - : forall (A : Type) (PA : A -> Type) (P : seq A -> Type), - P (Nil A) -> - (forall x : A, PA x -> forall xs : seq A, P xs -> P (Cons A x xs)) -> - forall l : seq A, is_seq A PA l -> P l -rose_induction -: -forall (A : Type) (PA : A -> Type) (P : rose A -> Type), -(forall x : A, PA x -> P (Leaf A x)) -> -(forall l : seq (rose A), is_seq (rose A) P l -> P (Node A l)) -> -forall x : rose A, is_rose A PA x -> P x - : forall (A : Type) (PA : A -> Type) (P : rose A -> Type), - (forall x : A, PA x -> P (Leaf A x)) -> - (forall l : seq (rose A), is_seq (rose A) P l -> P (Node A l)) -> - forall x : rose A, is_rose A PA x -> P x -nest_induction -: -forall P : forall A : Type, (A -> Type) -> nest A -> Type, -(forall (A : Type) (PA : A -> Type), P A PA (NilN A)) -> -(forall (A : Type) (PA : A -> Type) (x : A), - PA x -> - forall xs : nest (pair A A), - P (pair A A) (is_pair A PA A PA) xs -> P A PA (ConsN A x xs)) -> -forall (A : Type) (PA : A -> Type) (n : nest A), is_nest A PA n -> P A PA n - : forall P : forall A : Type, (A -> Type) -> nest A -> Type, - (forall (A : Type) (PA : A -> Type), P A PA (NilN A)) -> - (forall (A : Type) (PA : A -> Type) (x : A), - PA x -> - forall xs : nest (pair A A), - P (pair A A) (is_pair A PA A PA) xs -> P A PA (ConsN A x xs)) -> - forall (A : Type) (PA : A -> Type) (n : nest A), - is_nest A PA n -> P A PA n -w_induction -: -forall (A : Type) (PA : A -> Type) (P : w A -> Type), -(forall f : A -> w A, (forall a : A, PA a -> P (f a)) -> P (via A f)) -> -forall x : w A, is_w A PA x -> P x - : forall (A : Type) (PA : A -> Type) (P : w A -> Type), - (forall f : A -> w A, (forall a : A, PA a -> P (f a)) -> P (via A f)) -> - forall x : w A, is_w A PA x -> P x -vect_induction -: -forall (A : Type) (PA : A -> Type) - (P : forall n : peano, is_peano n -> vect A n -> Type), -P Zero is_Zero (VNil A) -> -(forall a : A, - PA a -> - forall (n : peano) (nR : is_peano n) (v : vect A n), - P n nR v -> P (Succ n) (is_Succ n nR) (VCons A a n v)) -> -forall (l : peano) (lR : is_peano l) (x : vect A l), -is_vect A PA l lR x -> P l lR x - : forall (A : Type) (PA : A -> Type) - (P : forall n : peano, is_peano n -> vect A n -> Type), - P Zero is_Zero (VNil A) -> - (forall a : A, - PA a -> - forall (n : peano) (nR : is_peano n) (v : vect A n), - P n nR v -> P (Succ n) (is_Succ n nR) (VCons A a n v)) -> - forall (l : peano) (lR : is_peano l) (x : vect A l), - is_vect A PA l lR x -> P l lR x -dyn_induction -: -forall P : dyn -> Type, -(forall (T : Type) (PT : T -> Type) (t : T), PT t -> P (box T t)) -> -forall x : dyn, is_dyn x -> P x - : forall P : dyn -> Type, - (forall (T : Type) (PT : T -> Type) (t : T), PT t -> P (box T t)) -> - forall x : dyn, is_dyn x -> P x -zeta_induction -: -forall (A : Type) (PA : A -> Type) (P : zeta A -> Type), -(forall a : A, PA a -> forall c : A, PA c -> P (Envelope A a c)) -> -forall x : zeta A, is_zeta A PA x -> P x - : forall (A : Type) (PA : A -> Type) (P : zeta A -> Type), - (forall a : A, PA a -> forall c : A, PA c -> P (Envelope A a c)) -> - forall x : zeta A, is_zeta A PA x -> P x -iota_induction - : forall P : iota -> Type, - (forall (n : peano) (Pn : is_peano n) - (a : match n with - | Zero => peano - | Succ _ => unit - end), - match - Pn in (is_peano n0) - return (match n0 with - | Zero => peano - | Succ _ => unit - end -> Type) - with - | is_Zero => is_peano - | is_Succ _ _ => is_unit - end a -> P (Why n a)) -> forall s1 : iota, is_iota s1 -> P s1 large_induction : forall P : large -> Type, (forall H : unit, is_unit H -> P (K1 H)) -> @@ -12012,196 +11692,291 @@ is_ord p Pp o1 -> forall o2 : ord p, is_ord p Pp o2 -> P (mkOrd2 p o1 o2)) -> forall o : ord2 p, is_ord2 p Pp o -> P o -COQC tests/test_eqcorrect.v -«elpi.tests.test_API2.HT» +unit_bcongr_tt : reflect (tt = tt) true + : reflect (tt = tt) true +peano_bcongr_Zero : reflect (Zero = Zero) true + : reflect (Zero = Zero) true +peano_bcongr_Succ +: +forall (x y : peano) (b : bool), +reflect (x = y) b -> reflect (Succ x = Succ y) b + : forall (x y : peano) (b : bool), + reflect (x = y) b -> reflect (Succ x = Succ y) b +option_bcongr_None : forall A : Type, reflect (None A = None A) true + : forall A : Type, reflect (None A = None A) true +option_bcongr_Some +: +forall (A : Type) (x y : A) (b : bool), +reflect (x = y) b -> reflect (Some A x = Some A y) b + : forall (A : Type) (x y : A) (b : bool), + reflect (x = y) b -> reflect (Some A x = Some A y) b +pair_bcongr_Comma +: +forall (A B : Type) (x1 x2 : A) (b1 : bool), +reflect (x1 = x2) b1 -> +forall (y1 y2 : B) (b2 : bool), +reflect (y1 = y2) b2 -> +reflect (Comma A B x1 y1 = Comma A B x2 y2) (b1 && b2) + : forall (A B : Type) (x1 x2 : A) (b1 : bool), + reflect (x1 = x2) b1 -> + forall (y1 y2 : B) (b2 : bool), + reflect (y1 = y2) b2 -> + reflect (Comma A B x1 y1 = Comma A B x2 y2) (b1 && b2) Query assignments: - F = «elpi.tests.test_API2.FT» - H = «elpi.tests.test_API2.HT» - X = «elpi.tests.test_API2.X» -Module Type HT = Sig Parameter idT : nat -> nat. End + C1 = «x» +seq_bcongr_Nil : forall A : Type, reflect (Nil A = Nil A) true + : forall A : Type, reflect (Nil A = Nil A) true +seq_bcongr_Cons +: +forall (A : Type) (x y : A) (b1 : bool), +reflect (x = y) b1 -> +forall (xs ys : seq A) (b2 : bool), +reflect (xs = ys) b2 -> reflect (Cons A x xs = Cons A y ys) (b1 && b2) + : forall (A : Type) (x y : A) (b1 : bool), + reflect (x = y) b1 -> + forall (xs ys : seq A) (b2 : bool), + reflect (xs = ys) b2 -> reflect (Cons A x xs = Cons A y ys) (b1 && b2) +rose_bcongr_Leaf +: +forall (A : Type) (x y : A) (b : bool), +reflect (x = y) b -> reflect (Leaf A x = Leaf A y) b + : forall (A : Type) (x y : A) (b : bool), + reflect (x = y) b -> reflect (Leaf A x = Leaf A y) b +rose_bcongr_Node +: +forall (A : Type) (l1 l2 : seq (rose A)) (b : bool), +reflect (l1 = l2) b -> reflect (Node A l1 = Node A l2) b + : forall (A : Type) (l1 l2 : seq (rose A)) (b : bool), + reflect (l1 = l2) b -> reflect (Node A l1 = Node A l2) b +nest_bcongr_NilN : forall A : Type, reflect (NilN A = NilN A) true + : forall A : Type, reflect (NilN A = NilN A) true +nest_bcongr_ConsN +: +forall (A : Type) (x y : A) (b1 : bool), +reflect (x = y) b1 -> +forall (xs ys : nest (pair A A)) (b2 : bool), +reflect (xs = ys) b2 -> reflect (ConsN A x xs = ConsN A y ys) (b1 && b2) + : forall (A : Type) (x y : A) (b1 : bool), + reflect (x = y) b1 -> + forall (xs ys : nest (pair A A)) (b2 : bool), + reflect (xs = ys) b2 -> + reflect (ConsN A x xs = ConsN A y ys) (b1 && b2) +w_bcongr_via +: +forall (A : Type) (f g : A -> w A) (b : bool), +reflect (f = g) b -> reflect (via A f = via A g) b + : forall (A : Type) (f g : A -> w A) (b : bool), + reflect (f = g) b -> reflect (via A f = via A g) b +zeta_bcongr_Envelope +: +forall (A : Type) (x1 x2 : A) (b1 : bool), +reflect (x1 = x2) b1 -> +forall (y1 y2 : A) (b2 : bool), +reflect (y1 = y2) b2 -> +reflect (Envelope A x1 y1 = Envelope A x2 y2) (b1 && b2) + : forall (A : Type) (x1 x2 : A) (b1 : bool), + reflect (x1 = x2) b1 -> + forall (y1 y2 : A) (b2 : bool), + reflect (y1 = y2) b2 -> + reflect (Envelope A x1 y1 = Envelope A x2 y2) (b1 && b2) +beta_bcongr_Redex +: +forall (A : Type) (x y : A) (b : bool), +reflect (x = y) b -> reflect (Redex A x = Redex A y) b + : forall (A : Type) (x y : A) (b : bool), + reflect (x = y) b -> reflect (Redex A x = Redex A y) b +prim_int_bcongr_PI +: +forall (x y : PrimInt63.int) (b : bool), +reflect (x = y) b -> reflect (PI x = PI y) b + : forall (x y : PrimInt63.int) (b : bool), + reflect (x = y) b -> reflect (PI x = PI y) b +prim_float_bcongr_PF +: +forall (x y : PrimFloat.float) (b : bool), +reflect (x = y) b -> reflect (PF x = PF y) b + : forall (x y : PrimFloat.float) (b : bool), + reflect (x = y) b -> reflect (PF x = PF y) b +fo_record_bcongr_Build_fo_record +: +forall (x1 x2 : peano) (b1 : bool), +reflect (x1 = x2) b1 -> +forall (y1 y2 : unit) (b2 : bool), +reflect (y1 = y2) b2 -> +reflect ({| f1 := x1; f2 := y1 |} = {| f1 := x2; f2 := y2 |}) (b1 && b2) + : forall (x1 x2 : peano) (b1 : bool), + reflect (x1 = x2) b1 -> + forall (y1 y2 : unit) (b2 : bool), + reflect (y1 = y2) b2 -> + reflect ({| f1 := x1; f2 := y1 |} = {| f1 := x2; f2 := y2 |}) + (b1 && b2) +pa_record_bcongr_Build_pa_record +: +forall (A : Type) (x1 x2 : peano) (b1 : bool), +reflect (x1 = x2) b1 -> +forall (y1 y2 : A) (b2 : bool), +reflect (y1 = y2) b2 -> +reflect ({| f3 := x1; f4 := y1 |} = {| f3 := x2; f4 := y2 |}) (b1 && b2) + : forall (A : Type) (x1 x2 : peano) (b1 : bool), + reflect (x1 = x2) b1 -> + forall (y1 y2 : A) (b2 : bool), + reflect (y1 = y2) b2 -> + reflect ({| f3 := x1; f4 := y1 |} = {| f3 := x2; f4 := y2 |}) + (b1 && b2) +pr_record_bcongr_Build_pr_record +: +forall (A : Type) (x1 x2 : peano) (b1 : bool), +reflect (x1 = x2) b1 -> +forall (y1 y2 : A) (b2 : bool), +reflect (y1 = y2) b2 -> +reflect ({| pf3 := x1; pf4 := y1 |} = {| pf3 := x2; pf4 := y2 |}) (b1 && b2) + : forall (A : Type) (x1 x2 : peano) (b1 : bool), + reflect (x1 = x2) b1 -> + forall (y1 y2 : A) (b2 : bool), + reflect (y1 = y2) b2 -> + reflect ({| pf3 := x1; pf4 := y1 |} = {| pf3 := x2; pf4 := y2 |}) + (b1 && b2) +enum_bcongr_E1 : reflect (E1 = E1) true + : reflect (E1 = E1) true +enum_bcongr_E2 : reflect (E2 = E2) true + : reflect (E2 = E2) true +enum_bcongr_E3 : reflect (E3 = E3) true + : reflect (E3 = E3) true +COQC tests/test_eqK.v Query assignments: - L = [«elpi.tests.test_API2.8», «elpi.tests.test_API2.9»] - S = {{ elpi.tests.test_API2.8; elpi.tests.test_API2.9; }} - U = «elpi.tests.test_API2.8» - UV = «elpi.tests.test_API2.8» - V = «elpi.tests.test_API2.9» - VV = «elpi.tests.test_API2.9» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API2.9 elpi.tests.test_API2.8} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API2.9 elpi.tests.test_API2.8} -UNDEFINED UNIVERSES: - elpi.tests.test_API2.9 - elpi.tests.test_API2.8 -SORTS: - -WEAK CONSTRAINTS: - - -File "./tests/test_API2.v", line 361, characters 3-201: -Warning: constant test has no declared type. [elpi.typecheck,elpi,default] + C1 = «x» + M = «elpi.tests.test_API2.xx» Query assignments: - _uvk_20_ = X0 - _uvk_21_ = X0 - _uvk_22_ = X1 - _uvk_23_ = X2 - _uvk_24_ = c0 \ -X3 c0 - _uvk_25_ = X4 - _uvk_26_ = c0 \ -X5 c0 - _uvk_27_ = X4 - _uvk_28_ = c0 \ -X5 c0 - _uvk_29_ = X6 - _uvk_30_ = c0 \ -X7 c0 - _uvk_31_ = c0 \ c1 \ -X8 c0 c1 - _uvk_32_ = X9 - _uvk_33_ = c0 \ -X10 c0 - _uvk_34_ = c0 \ c1 \ -X11 c0 c1 - _uvk_35_ = X12 - _uvk_36_ = c0 \ -X13 c0 - _uvk_37_ = c0 \ c1 \ -X14 c0 c1 - _uvk_38_ = X12 -Syntactic constraints: - evar X12 (sort (typ «elpi.tests.test_API2.25»)) X12 /* suspended on X12 */ - evar X12 (sort (typ «elpi.tests.test_API2.28»)) X12 /* suspended on X12 */ - {c0 c1} : decl c1 `x` (X13 c0), decl c0 `z` X12 - ?- evar (X14 c0 c1) (sort (typ «elpi.tests.test_API2.27»)) (X14 c0 c1) /* suspended on X14 */ - {c0} : decl c0 `z` X12 - ?- evar (X13 c0) (sort (typ «elpi.tests.test_API2.26»)) (X13 c0) /* suspended on X13 */ - {c0 c1} : decl c1 `x` (X10 c0), decl c0 `z` X9 - ?- evar (X11 c0 c1) (sort (typ «elpi.tests.test_API2.24»)) (X11 c0 c1) /* suspended on X11 */ - {c0} : decl c0 `z` X9 - ?- evar (X10 c0) (sort (typ «elpi.tests.test_API2.23»)) (X10 c0) /* suspended on X10 */ - evar (X9) (sort (typ «elpi.tests.test_API2.22»)) (X9) /* suspended on X9 */ - {c0 c1} : decl c1 `x` (X7 c0), decl c0 `z` X6 - ?- evar (X8 c0 c1) (sort (typ «elpi.tests.test_API2.21»)) (X8 c0 c1) /* suspended on X8 */ - {c0} : decl c0 `z` X6 - ?- evar (X7 c0) (sort (typ «elpi.tests.test_API2.20»)) (X7 c0) /* suspended on X7 */ - evar (X6) (sort (typ «elpi.tests.test_API2.19»)) (X6) /* suspended on X6 */ - evar X4 (sort (typ «elpi.tests.test_API2.15»)) X4 /* suspended on X4 */ - evar X4 (sort (typ «elpi.tests.test_API2.17»)) X4 /* suspended on X4 */ - {c0} : decl c0 `x` X4 - ?- evar (X5 c0) (sort (typ «elpi.tests.test_API2.16»)) (X5 c0) /* suspended on X5 */ - {c0} : decl c0 `x` X4 - ?- evar (X5 c0) (sort (typ «elpi.tests.test_API2.18»)) (X5 c0) /* suspended on X5 */ - {c0} : decl c0 `x` X2 - ?- evar (X3 c0) (sort (typ «elpi.tests.test_API2.14»)) (X3 c0) /* suspended on X3 */ - evar (X2) (sort (typ «elpi.tests.test_API2.13»)) (X2) /* suspended on X2 */ - evar (X1) (sort (typ «elpi.tests.test_API2.12»)) (X1) /* suspended on X1 */ - evar X0 (sort (typ «elpi.tests.test_API2.10»)) X0 /* suspended on X0 */ - evar X0 (sort (typ «elpi.tests.test_API2.11»)) X0 /* suspended on X0 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API2.28 elpi.tests.test_API2.27 elpi.tests.test_API2.26 - elpi.tests.test_API2.25 elpi.tests.test_API2.24 elpi.tests.test_API2.23 - elpi.tests.test_API2.22 elpi.tests.test_API2.21 elpi.tests.test_API2.20 - elpi.tests.test_API2.19 elpi.tests.test_API2.18 elpi.tests.test_API2.17 - elpi.tests.test_API2.16 elpi.tests.test_API2.15 elpi.tests.test_API2.14 - elpi.tests.test_API2.13 elpi.tests.test_API2.12 elpi.tests.test_API2.11 - elpi.tests.test_API2.10} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - α6 - α7 - α8 - α9 - α10 - α11 - α12 - α13 - α14 - α15 - α16 - α17 - α18 - α19 - α20 - α21 - α22 - α23 - α24 -WEAK CONSTRAINTS: - - -COQC tests/test_require_bad_order.v -empty_eq_correct : correct empty is_empty empty_eq - : correct empty is_empty empty_eq -unit_eq_correct : correct unit is_unit unit_eq - : correct unit is_unit unit_eq -peano_eq_correct : correct peano is_peano peano_eq - : correct peano is_peano peano_eq -option_eq_correct + C1 = «x» + M = «elpi.tests.test_API2.xx2» +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx3» +eq_axiom_tt : eq_axiom_at unit unit_eq tt + : eq_axiom_at unit unit_eq tt +eq_axiom_Zero : eq_axiom_at peano peano_eq Zero + : eq_axiom_at peano peano_eq Zero +eq_axiom_Succ +: +forall y : peano, +eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) + : forall y : peano, + eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) +eq_axiom_None : forall (A : Type) (f : eq_test A), -correct (option A) (is_option A (eq_axiom_at A f)) (option_eq A f) +eq_axiom_at (option A) (option_eq A f) (None A) : forall (A : Type) (f : eq_test A), - correct (option A) (is_option A (eq_axiom_at A f)) (option_eq A f) -pair_eq_correct + eq_axiom_at (option A) (option_eq A f) (None A) +eq_axiom_Some : -forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B), -correct (pair A B) (is_pair A (eq_axiom_at A f) B (eq_axiom_at B g)) - (pair_eq A f B g) - : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B), - correct (pair A B) (is_pair A (eq_axiom_at A f) B (eq_axiom_at B g)) - (pair_eq A f B g) -seq_eq_correct +forall (A : Type) (f : eq_test A) (x : A), +eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) + : forall (A : Type) (f : eq_test A) (x : A), + eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) +eq_axiom_Comma : -forall (A : Type) (f : eq_test A), -correct (seq A) (is_seq A (eq_axiom_at A f)) (seq_eq A f) - : forall (A : Type) (f : eq_test A), - correct (seq A) (is_seq A (eq_axiom_at A f)) (seq_eq A f) -rose_eq_correct +forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), +eq_axiom_at A f x -> +forall y : B, +eq_axiom_at B g y -> eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) + : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), + eq_axiom_at A f x -> + forall y : B, + eq_axiom_at B g y -> + eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) +eq_axiom_Nil : -forall (A : Type) (f : eq_test A), -correct (rose A) (is_rose A (eq_axiom_at A f)) (rose_eq A f) +forall (A : Type) (f : eq_test A), eq_axiom_at (seq A) (seq_eq A f) (Nil A) : forall (A : Type) (f : eq_test A), - correct (rose A) (is_rose A (eq_axiom_at A f)) (rose_eq A f) -zeta_eq_correct + eq_axiom_at (seq A) (seq_eq A f) (Nil A) +eq_axiom_Cons : -forall (A : Type) (f : eq_test A), -correct (zeta A) (is_zeta A (eq_axiom_at A f)) (zeta_eq A f) - : forall (A : Type) (f : eq_test A), - correct (zeta A) (is_zeta A (eq_axiom_at A f)) (zeta_eq A f) -beta_eq_correct +forall (A : Type) (f : eq_test A) (x : A), +eq_axiom_at A f x -> +forall xs : seq A, +eq_axiom_at (seq A) (seq_eq A f) xs -> +eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) + : forall (A : Type) (f : eq_test A) (x : A), + eq_axiom_at A f x -> + forall xs : seq A, + eq_axiom_at (seq A) (seq_eq A f) xs -> + eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) +eq_axiom_Leaf : -forall (A : Type) (f : eq_test A), -correct (beta A) (is_beta A (eq_axiom_at A f)) (beta_eq A f) - : forall (A : Type) (f : eq_test A), - correct (beta A) (is_beta A (eq_axiom_at A f)) (beta_eq A f) -prim_int_eq_correct - : correct prim_int is_prim_int prim_int_eq -fo_record_eq_correct : correct fo_record is_fo_record fo_record_eq - : correct fo_record is_fo_record fo_record_eq -pa_record_eq_correct +forall (A : Type) (f : eq_test A) (a : A), +eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) + : forall (A : Type) (f : eq_test A) (a : A), + eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) +eq_axiom_Node : -forall (A : Type) (f : eq_test A), -correct (pa_record A) (is_pa_record A (eq_axiom_at A f)) (pa_record_eq A f) - : forall (A : Type) (f : eq_test A), - correct (pa_record A) (is_pa_record A (eq_axiom_at A f)) - (pa_record_eq A f) -pr_record_eq_correct +forall (A : Type) (f : eq_test A) (l : seq (rose A)), +eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> +eq_axiom_at (rose A) (rose_eq A f) (Node A l) + : forall (A : Type) (f : eq_test A) (l : seq (rose A)), + eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> + eq_axiom_at (rose A) (rose_eq A f) (Node A l) +eq_axiom_Envelope + : forall (Sender : Type) (f : eq_test Sender) (x : Sender), + eq_axiom_at Sender f x -> + forall x0 : Sender, + eq_axiom_at Sender f x0 -> + forall x1 : zeta Sender, + eq_axiom_on (zeta Sender) (zeta_eq Sender f) (Envelope Sender x x0) x1 +eq_axiom_Redex + : forall (A : Type) (f : eq_test A) (x : A), + eq_axiom_at A f x -> + forall x0 : beta A, eq_axiom_on (beta A) (beta_eq A f) (Redex A x) x0 +eq_axiom_PI + : forall x : PrimInt63.int, + eq_axiom_at PrimInt63.int PrimInt63.eqb x -> + forall x0 : prim_int, eq_axiom_on prim_int prim_int_eq (PI x) x0 +eq_axiom_PF + : forall x : PrimFloat.float, + eq_axiom_at PrimFloat.float PrimFloat.eqb x -> + forall x0 : prim_float, eq_axiom_on prim_float prim_float_eq (PF x) x0 +eq_axiom_Build_fo_record : -forall (A : Type) (f : eq_test A), -correct (pr_record A) (is_pr_record A (eq_axiom_at A f)) (pr_record_eq A f) - : forall (A : Type) (f : eq_test A), - correct (pr_record A) (is_pr_record A (eq_axiom_at A f)) - (pr_record_eq A f) -enum_eq_correct : correct enum is_enum enum_eq - : correct enum is_enum enum_eq -test coqdoc hyperlinks -test link order +forall x : peano, +eq_axiom_at peano peano_eq x -> +forall y : unit, +eq_axiom_at unit unit_eq y -> +eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} + : forall x : peano, + eq_axiom_at peano peano_eq x -> + forall y : unit, + eq_axiom_at unit unit_eq y -> + eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} +eq_axiom_Build_pa_record +: +forall (A : Type) (f : eq_test A) (x : peano), +eq_axiom_at peano peano_eq x -> +forall y : A, +eq_axiom_at A f y -> +eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} + : forall (A : Type) (f : eq_test A) (x : peano), + eq_axiom_at peano peano_eq x -> + forall y : A, + eq_axiom_at A f y -> + eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} +eq_axiom_Build_pr_record +: +forall (A : Type) (f : eq_test A) (x : peano), +eq_axiom_at peano peano_eq x -> +forall y : A, +eq_axiom_at A f y -> +eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} + : forall (A : Type) (f : eq_test A) (x : peano), + eq_axiom_at peano peano_eq x -> + forall y : A, + eq_axiom_at A f y -> + eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} +eq_axiom_E1 : eq_axiom_at enum enum_eq E1 + : eq_axiom_at enum enum_eq E1 +eq_axiom_E2 : eq_axiom_at enum enum_eq E2 + : eq_axiom_at enum enum_eq E2 +eq_axiom_E3 : eq_axiom_at enum enum_eq E3 + : eq_axiom_at enum enum_eq E3 Skipping derivation map on indt «nat» since the user did not select it Skipping derivation lens on indt «nat» since the user did not select it Skipping derivation param1 on indt «nat» since it has been already run @@ -12234,6 +12009,8 @@ Skipping derivation eqcorrect on indt «nat» since it has been already run Skipping derivation eqbOK on indt «nat» since the user did not select it Skipping derivation eqOK on indt «nat» since it has been already run +COQC tests/test_eqcorrect.v +Finished transaction in 9.634 secs (9.586u,0.s) (successful) derive.param1_trivial: wrong shape is_t A PA . It does not look like a unary parametricity translation of an inductive with no indexes. Vector.t_eq @@ -12323,6 +12100,35 @@ : forall (A : Type) (i : nat), Vector.t A i -> BinNums.positive W_tag : (forall A : Type, W A -> BinNums.positive) : forall A : Type, W A -> BinNums.positive +Finished transaction in 0.162 secs (0.162u,0.s) (successful) +Query assignments: + _uvk_1_ = X0 + _uvk_2_ = X1 +Syntactic constraints: + evar (X1) (X2) (X1) /* suspended on X1 */ + evar X3 (sort (typ «elpi.tests.test_API2.6»)) (X2) /* suspended on X3, X2 */ + evar (X0) (X4) (X0) /* suspended on X0 */ + evar X5 (sort (typ «elpi.tests.test_API2.5»)) (X4) /* suspended on X5, X4 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API2.6 elpi.tests.test_API2.5} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + α4 + α5 +WEAK CONSTRAINTS: + + +Non-discriminated database +Unfoldable variable definitions: all +Unfoldable constant definitions: all +Cut: emp +For any goal -> +For xeq -> exact xxx(level 0, pattern 0 = _, id 0) + XXX.rtree_tag : (forall A : Type, rtree A -> BinNums.positive) : forall A : Type, rtree A -> BinNums.positive XXX.rtree_fields_t : Type -> BinNums.positive -> Type @@ -12360,7 +12166,88 @@ (forall (x : Coverage.unit) (Px : is_unit x), P x Px (more x)) -> forall (u : Coverage.unit) (p : is_unit u) (s : triv u), triv.is_triv u p s -> P u p s +Query assignments: + _uvk_19_ = «elpi.tests.test_API2.7» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API2.7} +UNDEFINED UNIVERSES: + elpi.tests.test_API2.7 +SORTS: + +WEAK CONSTRAINTS: + + Debug: Cannot enforce elpi.apps.derive.tests.test_derive.4344 <= Set +empty_eq_correct : correct empty is_empty empty_eq + : correct empty is_empty empty_eq +unit_eq_correct : correct unit is_unit unit_eq + : correct unit is_unit unit_eq +peano_eq_correct : correct peano is_peano peano_eq + : correct peano is_peano peano_eq +option_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (option A) (is_option A (eq_axiom_at A f)) (option_eq A f) + : forall (A : Type) (f : eq_test A), + correct (option A) (is_option A (eq_axiom_at A f)) (option_eq A f) +pair_eq_correct +: +forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B), +correct (pair A B) (is_pair A (eq_axiom_at A f) B (eq_axiom_at B g)) + (pair_eq A f B g) + : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B), + correct (pair A B) (is_pair A (eq_axiom_at A f) B (eq_axiom_at B g)) + (pair_eq A f B g) +seq_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (seq A) (is_seq A (eq_axiom_at A f)) (seq_eq A f) + : forall (A : Type) (f : eq_test A), + correct (seq A) (is_seq A (eq_axiom_at A f)) (seq_eq A f) +rose_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (rose A) (is_rose A (eq_axiom_at A f)) (rose_eq A f) + : forall (A : Type) (f : eq_test A), + correct (rose A) (is_rose A (eq_axiom_at A f)) (rose_eq A f) +zeta_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (zeta A) (is_zeta A (eq_axiom_at A f)) (zeta_eq A f) + : forall (A : Type) (f : eq_test A), + correct (zeta A) (is_zeta A (eq_axiom_at A f)) (zeta_eq A f) +beta_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (beta A) (is_beta A (eq_axiom_at A f)) (beta_eq A f) + : forall (A : Type) (f : eq_test A), + correct (beta A) (is_beta A (eq_axiom_at A f)) (beta_eq A f) +prim_int_eq_correct + : correct prim_int is_prim_int prim_int_eq +fo_record_eq_correct : correct fo_record is_fo_record fo_record_eq + : correct fo_record is_fo_record fo_record_eq +pa_record_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (pa_record A) (is_pa_record A (eq_axiom_at A f)) (pa_record_eq A f) + : forall (A : Type) (f : eq_test A), + correct (pa_record A) (is_pa_record A (eq_axiom_at A f)) + (pa_record_eq A f) +pr_record_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (pr_record A) (is_pr_record A (eq_axiom_at A f)) (pr_record_eq A f) + : forall (A : Type) (f : eq_test A), + correct (pr_record A) (is_pr_record A (eq_axiom_at A f)) + (pr_record_eq A f) +enum_eq_correct : correct enum is_enum enum_eq + : correct enum is_enum enum_eq +Query assignments: + GR = const const EXN PRINTING: Not_found + T = «elpi.tests.test_API2.T» derive.param1_trivial: wrong shape is_Pred . It does not look like a unary parametricity translation of an inductive with no indexes. Pred.Pred_to_Predinv : (forall T : RoseTree, Pred T -> Pred.Predinv T) @@ -12381,6 +12268,13 @@ : wimpls where ?rtree0 : [ |- rtree nat] +«elpi.tests.test_API2.G» +Query assignments: + F = «elpi.tests.test_API2.F» + G = «elpi.tests.test_API2.G» + X = «elpi.tests.test_API2.X» +Module G : Sig Definition id : X.T -> X.T. End := (F X) + is_empty_trivial : trivial empty is_empty : trivial empty is_empty is_unit_trivial : trivial unit is_unit @@ -12539,6 +12433,29 @@ : full val is_val COQC tests/test_eqOK.v COQC tests/test_eqbcorrect.v +«elpi.tests.test_API2.H» +Query assignments: + F = «elpi.tests.test_API2.F» + H = «elpi.tests.test_API2.H» + X = «elpi.tests.test_API2.X» +Module H : Sig Definition id : nat -> nat. End := (F X) + +Query assignments: + GR = const const EXN PRINTING: Not_found + T = «elpi.tests.test_API2.T» +Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End +«elpi.tests.test_API2.GT» +Query assignments: + F = «elpi.tests.test_API2.FT» + G = «elpi.tests.test_API2.GT» + X = «elpi.tests.test_API2.X» +Module Type GT = Sig Parameter idT : X.T -> X.T. End +«elpi.tests.test_API2.HT» +Query assignments: + F = «elpi.tests.test_API2.FT» + H = «elpi.tests.test_API2.HT» + X = «elpi.tests.test_API2.X» +Module Type HT = Sig Parameter idT : nat -> nat. End empty_eq_OK : ok empty empty_eq : ok empty empty_eq unit_eq_OK : ok unit unit_eq @@ -12599,11 +12516,130 @@ ok A f -> ok (pr_record A) (pr_record_eq A f) enum_eq_OK : ok enum enum_eq : ok enum enum_eq +Query assignments: + L = [«elpi.tests.test_API2.8», «elpi.tests.test_API2.9»] + S = {{ elpi.tests.test_API2.8; elpi.tests.test_API2.9; }} + U = «elpi.tests.test_API2.8» + UV = «elpi.tests.test_API2.8» + V = «elpi.tests.test_API2.9» + VV = «elpi.tests.test_API2.9» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API2.9 elpi.tests.test_API2.8} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API2.9 elpi.tests.test_API2.8} +UNDEFINED UNIVERSES: + elpi.tests.test_API2.9 + elpi.tests.test_API2.8 +SORTS: + +WEAK CONSTRAINTS: + + +File "./tests/test_API2.v", line 361, characters 3-201: +Warning: constant test has no declared type. [elpi.typecheck,elpi,default] dlist_eqOK : forall (A : Type) (f : A -> A -> bool), ok A f -> ok (dlist A) (dlist_eq A f) : forall (A : Type) (f : A -> A -> bool), ok A f -> ok (dlist A) (dlist_eq A f) +Query assignments: + _uvk_20_ = X0 + _uvk_21_ = X0 + _uvk_22_ = X1 + _uvk_23_ = X2 + _uvk_24_ = c0 \ +X3 c0 + _uvk_25_ = X4 + _uvk_26_ = c0 \ +X5 c0 + _uvk_27_ = X4 + _uvk_28_ = c0 \ +X5 c0 + _uvk_29_ = X6 + _uvk_30_ = c0 \ +X7 c0 + _uvk_31_ = c0 \ c1 \ +X8 c0 c1 + _uvk_32_ = X9 + _uvk_33_ = c0 \ +X10 c0 + _uvk_34_ = c0 \ c1 \ +X11 c0 c1 + _uvk_35_ = X12 + _uvk_36_ = c0 \ +X13 c0 + _uvk_37_ = c0 \ c1 \ +X14 c0 c1 + _uvk_38_ = X12 +Syntactic constraints: + evar X12 (sort (typ «elpi.tests.test_API2.25»)) X12 /* suspended on X12 */ + evar X12 (sort (typ «elpi.tests.test_API2.28»)) X12 /* suspended on X12 */ + {c0 c1} : decl c1 `x` (X13 c0), decl c0 `z` X12 + ?- evar (X14 c0 c1) (sort (typ «elpi.tests.test_API2.27»)) (X14 c0 c1) /* suspended on X14 */ + {c0} : decl c0 `z` X12 + ?- evar (X13 c0) (sort (typ «elpi.tests.test_API2.26»)) (X13 c0) /* suspended on X13 */ + {c0 c1} : decl c1 `x` (X10 c0), decl c0 `z` X9 + ?- evar (X11 c0 c1) (sort (typ «elpi.tests.test_API2.24»)) (X11 c0 c1) /* suspended on X11 */ + {c0} : decl c0 `z` X9 + ?- evar (X10 c0) (sort (typ «elpi.tests.test_API2.23»)) (X10 c0) /* suspended on X10 */ + evar (X9) (sort (typ «elpi.tests.test_API2.22»)) (X9) /* suspended on X9 */ + {c0 c1} : decl c1 `x` (X7 c0), decl c0 `z` X6 + ?- evar (X8 c0 c1) (sort (typ «elpi.tests.test_API2.21»)) (X8 c0 c1) /* suspended on X8 */ + {c0} : decl c0 `z` X6 + ?- evar (X7 c0) (sort (typ «elpi.tests.test_API2.20»)) (X7 c0) /* suspended on X7 */ + evar (X6) (sort (typ «elpi.tests.test_API2.19»)) (X6) /* suspended on X6 */ + evar X4 (sort (typ «elpi.tests.test_API2.15»)) X4 /* suspended on X4 */ + evar X4 (sort (typ «elpi.tests.test_API2.17»)) X4 /* suspended on X4 */ + {c0} : decl c0 `x` X4 + ?- evar (X5 c0) (sort (typ «elpi.tests.test_API2.16»)) (X5 c0) /* suspended on X5 */ + {c0} : decl c0 `x` X4 + ?- evar (X5 c0) (sort (typ «elpi.tests.test_API2.18»)) (X5 c0) /* suspended on X5 */ + {c0} : decl c0 `x` X2 + ?- evar (X3 c0) (sort (typ «elpi.tests.test_API2.14»)) (X3 c0) /* suspended on X3 */ + evar (X2) (sort (typ «elpi.tests.test_API2.13»)) (X2) /* suspended on X2 */ + evar (X1) (sort (typ «elpi.tests.test_API2.12»)) (X1) /* suspended on X1 */ + evar X0 (sort (typ «elpi.tests.test_API2.10»)) X0 /* suspended on X0 */ + evar X0 (sort (typ «elpi.tests.test_API2.11»)) X0 /* suspended on X0 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API2.28 elpi.tests.test_API2.27 elpi.tests.test_API2.26 + elpi.tests.test_API2.25 elpi.tests.test_API2.24 elpi.tests.test_API2.23 + elpi.tests.test_API2.22 elpi.tests.test_API2.21 elpi.tests.test_API2.20 + elpi.tests.test_API2.19 elpi.tests.test_API2.18 elpi.tests.test_API2.17 + elpi.tests.test_API2.16 elpi.tests.test_API2.15 elpi.tests.test_API2.14 + elpi.tests.test_API2.13 elpi.tests.test_API2.12 elpi.tests.test_API2.11 + elpi.tests.test_API2.10} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: + α6 + α7 + α8 + α9 + α10 + α11 + α12 + α13 + α14 + α15 + α16 + α17 + α18 + α19 + α20 + α21 + α22 + α23 + α24 +WEAK CONSTRAINTS: + + +COQC tests/test_require_bad_order.v +test coqdoc hyperlinks +test link order peano_eqb_correct : (forall n m : peano, peano_eqb n m = true -> n = m) : forall n m : peano, peano_eqb n m = true -> n = m peano_eqb_refl : (forall n : peano, peano_eqb n n = true) @@ -12660,9 +12696,9 @@ COQC tests/test_generalize.v COQC tests/test_cycle.v COQC examples/usage_eltac.v +trying i = i d : nat -trying i = i trying elpi_ctx_entry_2_ = elpi_ctx_entry_2_ trying elpi_ctx_entry_1_ = elpi_ctx_entry_1_ /\ p0 = p0 trying elpi_ctx_entry_1_ = elpi_ctx_entry_1_ /\ p0 = p0 @@ -12685,10 +12721,6 @@ : nat Foo.x = 3 : nat -Foo.x = 3 - : nat -Foo.x2 = 4 - : nat This.Is.A.Long.Namespace.stuff = 2 : nat = 1 @@ -12696,13 +12728,17 @@ This_aux_1.This.Is.A.Long.Namespace.stuff This.Is.A.Long.Namespace.more_stuff This.Is.A.Long.Namespace.stuff -eq_refl : Foo.x = 5 - : Foo.x = 5 +Foo.x = 3 + : nat +Foo.x2 = 4 + : nat This_aux_1.This.Is.A.Long.Namespace.stuff : nat This.Is.A.Long.Namespace.more_stuff : nat This.Is.A.Long.Namespace.stuff : nat stuff = 2 : nat +eq_refl : Foo.x = 5 + : Foo.x = 5 default nat_def : nat : nat A.B.c : nat @@ -12825,7 +12861,7 @@ create-stamp debian/debhelper-build-stamp dh_prep dh_auto_install --destdir=debian/libcoq-elpi/ - make -j11 install DESTDIR=/build/reproducible-path/coq-elpi-1.19.3/debian/libcoq-elpi AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" + make -j21 install DESTDIR=/build/reproducible-path/coq-elpi-1.19.3/debian/libcoq-elpi AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" make[1]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3' Using coq found in /usr/bin, from COQBIN or PATH ########################## installing plugin ############################ @@ -13091,8 +13127,8 @@ dh_gencontrol dh_md5sums dh_builddeb -dpkg-deb: building package 'libcoq-elpi' in '../libcoq-elpi_1.19.3-2_i386.deb'. dpkg-deb: building package 'libcoq-elpi-dbgsym' in '../libcoq-elpi-dbgsym_1.19.3-2_i386.deb'. +dpkg-deb: building package 'libcoq-elpi' in '../libcoq-elpi_1.19.3-2_i386.deb'. dpkg-genbuildinfo --build=binary -O../coq-elpi_1.19.3-2_i386.buildinfo dpkg-genchanges --build=binary -O../coq-elpi_1.19.3-2_i386.changes dpkg-genchanges: info: binary-only upload (no source code included) @@ -13100,12 +13136,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/28194/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/23573 and its subdirectories -I: Current time: Tue May 14 13:06:23 -12 2024 -I: pbuilder-time-stamp: 1715735183 +I: removing directory /srv/workspace/pbuilder/28194 and its subdirectories +I: Current time: Tue Jun 17 21:31:27 +14 2025 +I: pbuilder-time-stamp: 1750145487