Diff of the two buildlogs: -- --- b1/build.log 2024-05-10 19:14:19.690070410 +0000 +++ b2/build.log 2024-05-10 19:16:46.419818827 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri May 10 07:04:15 -12 2024 -I: pbuilder-time-stamp: 1715367855 +I: Current time: Fri Jun 13 15:37:22 +14 2025 +I: pbuilder-time-stamp: 1749778642 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -28,52 +28,84 @@ 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/2040777/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3315343/tmp/hooks/D01_modify_environment starting +debug: Running on ionos5-amd64. +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 13 01:37 /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/3315343/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3315343/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='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='amd64' + 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]="x86_64-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=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='5ec5d930f341443ab17494eb1c31dcf9' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - 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='2040777' - PS1='# ' - PS2='> ' + INVOCATION_ID=8e0c2f54676f48f289396c573bd983f3 + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-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=3315343 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.Ai8hjnxA/pbuilderrc_2aY9 --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.Ai8hjnxA/b1 --logfile b1/build.log coq-elpi_1.19.3-2.dsc' - SUDO_GID='110' - SUDO_UID='105' - 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.Ai8hjnxA/pbuilderrc_eSNN --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.Ai8hjnxA/b2 --logfile b2/build.log coq-elpi_1.19.3-2.dsc' + SUDO_GID=110 + SUDO_UID=105 + 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 ionos1-amd64 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.6.13+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.6.13-1~bpo12+1 (2024-02-15) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 8 11:26 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2040777/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Jun 10 17:46 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3315343/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -199,7 +231,7 @@ Get: 76 http://deb.debian.org/debian trixie/main amd64 libppx-deriving-ocaml-dev amd64 5.2.1-4+b3 [798 kB] Get: 77 http://deb.debian.org/debian trixie/main amd64 libre-ocaml-dev amd64 1.11.0-1+b1 [928 kB] Get: 78 http://deb.debian.org/debian trixie/main amd64 libelpi-ocaml-dev amd64 1.17.4-3+b1 [9354 kB] -Fetched 351 MB in 26s (13.5 MB/s) +Fetched 351 MB in 4s (78.5 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:amd64. (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 ... 19699 files and directories currently installed.) @@ -463,8 +495,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Fri May 10 19:07:39 UTC 2024. -Universal Time is now: Fri May 10 19:07:39 UTC 2024. +Local time is now: Fri Jun 13 01:38:14 UTC 2025. +Universal Time is now: Fri Jun 13 01:38:14 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -538,7 +570,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/3315343/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/3315343/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 @@ -818,7 +854,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.03 secs (0.016u,0.s) (successful) +Finished transaction in 0.008 secs (0.008u,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 @@ -909,7 +945,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 -j20 test + make -j42 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 ########################## @@ -921,10 +957,10 @@ Using coq found in /usr/bin//, from COQBIN or PATH COQDEP VFILES make[4]: Nothing to be done for 'real-all'. -COQC tests/test_API.v make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/derive' make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/eltac' Using coq found in /usr/bin//, from COQBIN or PATH +COQC tests/test_API.v COQC tests/test_API_elaborate.v COQC tests/test_API_typecheck.v COQC tests/test_API_env.v @@ -943,11 +979,30 @@ COQC tests/test_ltac3.v COQC tests/test_cache_async.v COQC tests/test_COQ_ELPI_ATTRIBUTES.v +COQC tests/perf_calls.v +COQC tests/test_ctx_cache.v +COQC tests/test_libobject_A.v +COQC tests/test_glob.v +COQC tests/test_link_perf.v +COQC tests/test_link_order1.v +COQC tests/test_link_order2.v +COQC tests/test_link_order3.v +COQC tests/test_link_order4.v +COQC tests/test_link_order5.v +COQC tests/test_link_order6.v +COQC tests/test_link_order7.v +COQC tests/test_link_order8.v +COQC tests/test_API_new_pred.v +COQC tests/test_link_order_import0.v +make[4]: Nothing to be done for 'real-all'. ?r : Reflexive R : Reflexive R where ?r : [ |- Reflexive R] +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/eltac' test2 +make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/NES' +Using coq found in /usr/bin//, from COQBIN or PATH test1 str hello test1 @@ -955,19 +1010,95 @@ test1 str hello my str Dear +COQC tests/test_libobject_B.v test1 too many arguments +COQC tests/test_link_order_import1.v +COQC tests/test_link_order_import2.v make[4]: Nothing to be done for 'real-all'. -COQC tests/perf_calls.v +z + : nat +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/NES' + {c0} : decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0) + (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) + (X1 c0) /* suspended on X0, X1 */ +EVARS: + ?X2==[x |- bool -> True] (goal evar) {?Goal} + ?X1==[ |- => fun x : nat => ?Goal] (goal evar) + +SHELF:|| +FUTURE GOALS STACK: + || + +Coq-Elpi mapping: +RAW: +?X2 <-> c0 \ X0 c0 +ELAB: +?X2 <-> X1 + + {c0} : decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0) + (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) + (X1 c0) /* suspended on X0, X1 */ +make[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' +Using coq found in /usr/bin//, from COQBIN or PATH +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 +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 \ + 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]]] + GR = «Nat.add» + TY = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») Coq version: 8.18.0 = 8 . 18 . 0 Query assignments: MA = 8 MI = 18 P = 0 V = 8.18.0 -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 +Query assignments: + CA = «a» + CB = «b» + CC = «c» +d : nat + +d is not universe polymorphic +Expands to: Variable d +eq_refl : e2 = 3 + : e2 = 3 +d1 + : nat +d2 + : nat +i1 + : Prop +i2 + : Prop +k1 + : i1 +k2 + : i2 +r1 + : Set +r2 + : Type +f1 + : r1 -> nat +f2 + : r2 -> nat «elpi.tests.test_API_notations.abbr» Query assignments: A = «elpi.tests.test_API_notations.abbr» @@ -1006,6 +1137,46 @@ 4 = 4 : Prop Query assignments: + GR = const «myi» +myi : Reflexive R + : Reflexive R +Query assignments: + E = fun `n` (global (indt «nat»)) c0 \ + fun `t` (app [global (const «T2»), c0]) c1 \ + fun `_` + (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ + app + [global (const «g3»), c0, app [global (const «h»), c0, c1], + app + [global (indc «S»), + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] + TY = prod `n` (global (indt «nat»)) c0 \ + prod `t` (app [global (const «T2»), c0]) c1 \ + prod `_` + (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ + global (indt «nat») + _uvk_1_ = X0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_elaborate.13 elpi.tests.test_API_elaborate.10 + elpi.tests.test_API_elaborate.9} |= + elpi.tests.test_API_elaborate.13 < elpi.tests.test_API_elaborate.9 + Set <= elpi.tests.test_API_elaborate.10 + Set <= elpi.tests.test_API_elaborate.13 + T2.u0 <= elpi.tests.test_API_elaborate.13 + f3.u0 <= elpi.tests.test_API_elaborate.13 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API_elaborate.10} +UNDEFINED UNIVERSES: + elpi.tests.test_API_elaborate.10 +SORTS: + α4 := Type + α5 := Type +WEAK CONSTRAINTS: + + +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»), @@ -1052,45 +1223,19 @@ gref (const «CompSpec2Type»), gref (const «ID»), gref (const «id»), gref (const «IDProp»), gref (const «idProp»)] MP = «Coq.Init.Datatypes» -z - : nat Query assignments: - E = fun `n` (global (indt «nat»)) c0 \ - fun `t` (app [global (const «T2»), c0]) c1 \ - fun `_` - (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ - app - [global (const «g3»), c0, app [global (const «h»), c0, c1], - app - [global (indc «S»), - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] + 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 \ + 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]]] + GR = «Nat.add» TY = prod `n` (global (indt «nat»)) c0 \ - prod `t` (app [global (const «T2»), c0]) c1 \ - prod `_` - (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ - global (indt «nat») - _uvk_1_ = X0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_elaborate.13 elpi.tests.test_API_elaborate.10 - elpi.tests.test_API_elaborate.9} |= - elpi.tests.test_API_elaborate.13 < elpi.tests.test_API_elaborate.9 - Set <= elpi.tests.test_API_elaborate.10 - Set <= elpi.tests.test_API_elaborate.13 - T2.u0 <= elpi.tests.test_API_elaborate.13 - f3.u0 <= elpi.tests.test_API_elaborate.13 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_elaborate.10} -UNDEFINED UNIVERSES: - elpi.tests.test_API_elaborate.10 -SORTS: - α4 := Type - α5 := Type -WEAK CONSTRAINTS: - - -hello world + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») it = elpi_subproof : True it : True @@ -1106,82 +1251,9 @@ elpi_subproof is opaque Expands to: Constant elpi.tests.test_ltac.elpi_subproof Closed under the global context - {c0} : decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0) - (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) - (X1 c0) /* suspended on X0, X1 */ -EVARS: - ?X2==[x |- bool -> True] (goal evar) {?Goal} - ?X1==[ |- => fun x : nat => ?Goal] (goal evar) - -SHELF:|| -FUTURE GOALS STACK: - || - -Coq-Elpi mapping: -RAW: -?X2 <-> c0 \ X0 c0 -ELAB: -?X2 <-> X1 - - {c0} : decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0) - (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) - (X1 c0) /* suspended on X0, X1 */ -COQC tests/test_ctx_cache.v -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 -COQC tests/test_libobject_A.v -Query assignments: - GR = const «myi» -myi : Reflexive R - : Reflexive R -COQC tests/test_glob.v -Query assignments: - CA = «a» - CB = «b» - CC = «c» -d : nat - -d is not universe polymorphic -Expands to: Variable d -eq_refl : e2 = 3 - : e2 = 3 -make[4]: Nothing to be done for 'real-all'. +COQC tests/test_link_order_import3.v Query assignments: +COQC tests/test_ltac2.v BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ @@ -1198,83 +1270,6 @@ Succ = global (indc «S») 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/NES' -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[2]: Entering directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' -Using coq found in /usr/bin//, from COQBIN or PATH -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 -Query assignments: - 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, - tc-instance (const «Equivalence_PER») 10, - 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 «relation_implication_preorder») 0, - tc-instance (const «Equivalence_PreOrder») 10, - tc-instance (const «predicate_implication_preorder») 0, - tc-instance (const «Bool.Decidable_eq_bool») 0, - tc-instance (const «DecidableClass.Decidable_not») 0, - 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 «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] -COQC tests/test_link_perf.v -fun `H` X0 c0 \ - app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] -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 \ - 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]]] - GR = «Nat.add» - TY = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -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: B = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -1356,56 +1351,125 @@ WEAK CONSTRAINTS: -elpi.tests.test_API_module.X.i -[elpi, tests, test_API_module, X, Y] -[elpi, tests, test_API_module, X, Y] +make[4]: Nothing to be done for 'real-all'. +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-1.19.3/apps/locker' +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) [])] +COQC tests/test_libobject_C.v +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: - 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» -COQC tests/test_link_order1.v + Spilled_1 = const «foo» +foo 3 + : nat +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: - BO = fix `add` 0 + 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` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]] + [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: + + +hello world +Query assignments: + X = «x» +fx : nat -> nat + : nat -> nat +[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] 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] -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) [])] + tc-instance (const «relation_equivalence_rewrite_relation») 0, + tc-instance (const «Equivalence_PER») 10, + 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 «relation_implication_preorder») 0, + tc-instance (const «Equivalence_PreOrder») 10, + tc-instance (const «predicate_implication_preorder») 0, + tc-instance (const «Bool.Decidable_eq_bool») 0, + tc-instance (const «DecidableClass.Decidable_not») 0, + 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 «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] +[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.say raw: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -1440,6 +1504,9 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 52, column 0, character 981:, + get-option foo bar, get-option poly tt] raw: parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ parameter A2 explicit c0 c1 \ @@ -1542,6 +1609,36 @@ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) Illtyped inductive declaration +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: + + ---->>---- exit: std.assert-ok! (coq.typecheck-indt-decl @@ -1615,6 +1712,14 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +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 +[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 )])] typed: parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ parameter A2 explicit c0 c1 \ @@ -1644,6 +1749,9 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] +[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.say typed: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -1678,6 +1786,8 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +(fun _ : nat => 2 = 2) 3 + : Prop ----<<---- enter: coq.env.add-indt (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -1713,6 +1823,16 @@ (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X0 +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 ---->>---- exit: coq.env.add-indt (parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ @@ -1751,6 +1871,21 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?n : [ |- nat] +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 a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 : foo1 ?A2 ?B1 ?B2 3 where @@ -1759,6 +1894,25 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +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» ----<<---- enter: coq.say raw: (parameter A1 maximal X0 c0 \ @@ -1947,7 +2101,6 @@ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) Illtyped inductive declaration -make[4]: Nothing to be done for 'real-all'. ----<<---- enter: coq.say typed: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ @@ -2135,150 +2288,37 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -d1 - : nat -d2 - : nat -i1 - : Prop -i2 - : Prop -k1 - : i1 -k2 - : i2 -r1 - : Set -r2 - : Type -f1 - : r1 -> nat -f2 - : r2 -> nat -COQC tests/test_link_order2.v -Query assignments: - X = «x» -fx : nat -> nat - : nat -> 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 +global (indc «O») +app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +c2 +global (indt «nat») +z +nat Query assignments: - Spilled_1 = const «foo» -foo 3 - : nat + Spilled_1 = c0 \ c1 \ c2 \ +nat + Spilled_2 = c0 \ c1 \ c2 \ +z + T = global (indt «nat») +make[4]: Nothing to be done for 'real-all'. Query assignments: - Spilled_1 = «elpi.tests.test_API_notations.abbr2» -COQC tests/test_link_order3.v + GR = «empty_nat» + TY = 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' +Using coq found in /usr/bin//, from COQBIN or PATH [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»)) [])] -[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] -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: - - -[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] -Query assignments: - GR = «empty_nat» - TY = global (indt «nat») -Query assignments: - GR = indt «RewriteRelation» -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: - +Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory -make[4]: Nothing to be done for 'real-all'. -Query assignments: - I = «Y.i» - ID = j - J = «Y.j» - MP = «elpi.tests.test_API_module.Y» - P = [elpi, tests, test_API_module, Y] +COQDEP VFILES Query assignments: D = parameter A explicit (sort (typ «t.u0»)) c0 \ inductive t tt @@ -2499,111 +2539,6 @@ [global (indt «eq»), global (indt «nat»), app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) «foo» -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: - - ----<<---- enter: coq.say raw: (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ @@ -2804,112 +2739,6 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» -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 -c2 -global (indt «nat») -z -nat -Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z - T = global (indt «nat») -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]))] -Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory - -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 -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 «f» Spilled_2 = const «f» @@ -2925,89 +2754,303 @@ Expands to: Constant elpi.tests.test_API_arguments.f f (S:=bool * bool) : bool * bool -> Prop -COQDEP VFILES -Query assignments: - GR1 = indc «Vector.nil» - GR2 = indt «nat» - GR3 = const «A» Query assignments: - GR = indt «True» + 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: + + Query assignments: - T = sort (typ «elpi.tests.test_HOAS.3») - U = «elpi.tests.test_HOAS.3» -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»)) + 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] +opaque_3 : nat +opaque_3 is not universe polymorphic +opaque_3 is opaque +Expands to: Constant elpi.tests.test_API_section.opaque_3 +fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] 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 */ + 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: + 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_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 + {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 q X0 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» + I = «Y.i» + ID = j + J = «Y.j» + MP = «elpi.tests.test_API_module.Y» + P = [elpi, tests, test_API_module, Y] +Query r X0 +Result r 1 +fun `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) + c0 \ + match c0 + (fun `_` (X0 c0) c1 \ + fun `v` (app [global (indt «Vector.t»), X1 c0 c1, X2 c0 c1]) c2 \ + X3 c1 c2) + [global (indc «O»), + fun `_` (X4 c0) c1 \ + fun `_` (X5 c0 c1) c2 \ + fun `_` (X6 c0 c1 c2) c3 \ + app [global (indc «S»), global (indc «O»)]] +fun `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) + c0 \ + match c0 + (fun `_` (X7 c0) c1 \ + fun `v` + (app [global (indt «Vector.t»), global (indt «nat»), X8 c0 c1]) c2 \ + global (indt «nat»)) + [global (indc «O»), + fun `_` (X9 c0) c1 \ + fun `_` (X10 c0 c1) c2 \ + fun `_` (X11 c0 c1 c2) c3 \ + app [global (indc «S»), global (indc «O»)]] +Query assignments: + T = fun `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) + c0 \ + match c0 + (fun `_` (X7 c0) c1 \ + fun `v` + (app [global (indt «Vector.t»), global (indt «nat»), X8 c0 c1]) c2 \ + global (indt «nat»)) + [global (indc «O»), + fun `_` (X9 c0) c1 \ + fun `_` (X10 c0 c1) c2 \ + fun `_` (X11 c0 c1 c2) c3 \ + app [global (indc «S»), global (indc «O»)]] + _uvk_10_ = c0 \ c1 \ +global (indt «nat») + _uvk_11_ = c0 \ +X9 c0 + _uvk_12_ = c0 \ c1 \ +X10 c0 c1 + _uvk_13_ = c0 \ c1 \ c2 \ +X11 c0 c1 c2 + _uvk_7_ = c0 \ +X7 c0 + _uvk_8_ = c0 \ c1 \ +global (indt «nat») + _uvk_9_ = c0 \ c1 \ +X8 c0 c1 +Syntactic constraints: + {c0 c1 c2} : + decl c2 `y0` (X10 c0 c1), decl c1 `y` (X9 c0), + decl c0 `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) + ?- evar (X11 c0 c1 c2) (sort (typ «elpi.tests.test_quotation.10»)) + (X11 c0 c1 c2) /* suspended on X11 */ + {c0 c1} : + decl c1 `y` (X9 c0), + decl c0 `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) + ?- evar (X10 c0 c1) (sort (typ «elpi.tests.test_quotation.9»)) + (X10 c0 c1) /* suspended on X10 */ + {c0} : + decl c0 `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) + ?- evar (X9 c0) (sort (typ «elpi.tests.test_quotation.8»)) (X9 c0) /* suspended on X9 */ + {c0 c1} : + decl c1 `y` (X7 c0), + decl c0 `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) + ?- evar (X8 c0 c1) (X12 c0 c1) (X8 c0 c1) /* suspended on X8 */ + {c0 c1} : + decl c1 `y` (X7 c0), + decl c0 `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) + ?- evar (X13 c0 c1) (sort (typ «elpi.tests.test_quotation.6»)) + (X12 c0 c1) /* suspended on X13, X12 */ + {c0} : + decl c0 `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) + ?- evar (X7 c0) (sort (typ «elpi.tests.test_quotation.4»)) (X7 c0) /* suspended on X7 */ Universe constraints: UNIVERSES: - + {elpi.tests.test_quotation.12 elpi.tests.test_quotation.11 + elpi.tests.test_quotation.10 elpi.tests.test_quotation.9 + elpi.tests.test_quotation.8 elpi.tests.test_quotation.7 + elpi.tests.test_quotation.6 elpi.tests.test_quotation.5 + elpi.tests.test_quotation.4} |= + elpi.tests.test_quotation.11 < elpi.tests.test_quotation.5 + Set <= Vector.t.u0 + Set <= elpi.tests.test_quotation.11 + Set <= elpi.tests.test_quotation.12 + elpi.tests.test_quotation.11 <= Vector.t.u0 ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_module.11 A.i.u0} + {} UNDEFINED UNIVERSES: - elpi.tests.test_API_module.11 - A.i.u0 + elpi.tests.test_quotation.12 SORTS: - + α3 + α4 := Type + α5 + α6 + α7 + α8 + α9 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 ] +Query assignments: + T = sort (typ «elpi.tests.test_HOAS.3») + U = «elpi.tests.test_HOAS.3» c2 global (indt «nat») z @@ -3021,47 +3064,7 @@ Query assignments: X = 3 app [global (const «Nat.mul»), X0, X1] type -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_link_order4.v -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 \ - 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]]] - 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 -COQC tests/test_link_order5.v +COQC tests/test_vernacular2.v Query assignments: I = «foo» ----<<---- enter: @@ -3294,206 +3297,325 @@ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» 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»)] + GR = indt «RewriteRelation» +Query assignments: + GR1 = indc «Vector.nil» + GR2 = indt «nat» + GR3 = const «A» +COQC tests/test_derive_stdlib.v +Finished transaction in 1.434 secs (1.432u,0.s) (successful) +COQC tests/test_param2.v +COQC tests/test_invert.v +COQC tests/test_idx2inv.v +COQC examples/usage.v +COQC examples/readme.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: + 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: + Spilled_1 = «elpi.tests.test_API_notations.abbr2» +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))] +Query assignments: + U = «elpi.tests.test_HOAS.4» 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 + {elpi.tests.test_HOAS.4} |= ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: SORTS: - α19 := Type + WEAK CONSTRAINTS: -unknown_gref -COQC tests/test_derive_stdlib.v +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) 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» - 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) - -*** [ B.w : nat ] -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" -«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» -Query assignments: - U = «elpi.tests.test_HOAS.4» + _uvk_1_ = «A.i.u0» + _uvk_2_ = «elpi.tests.test_API_module.11» Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.4} |= + 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: -fun `v` +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 + +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) +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 + {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»))] +------------ +COQC tests/test_link_order9.v +prod `e` (app - [global (indt «Vector.t»), global (indt «nat»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) - c0 \ - match c0 - (fun `_` (X0 c0) c1 \ - fun `v` (app [global (indt «Vector.t»), X1 c0 c1, X2 c0 c1]) c2 \ - X3 c1 c2) - [global (indc «O»), - fun `_` (X4 c0) c1 \ - fun `_` (X5 c0 c1) c2 \ - fun `_` (X6 c0 c1 c2) c3 \ - app [global (indc «S»), global (indc «O»)]] -COQC tests/test_link_order6.v -fun `v` + [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 «Vector.t»), global (indt «nat»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) - c0 \ - match c0 - (fun `_` (X7 c0) c1 \ - fun `v` - (app [global (indt «Vector.t»), global (indt «nat»), X8 c0 c1]) c2 \ - global (indt «nat»)) - [global (indc «O»), - fun `_` (X9 c0) c1 \ - fun `_` (X10 c0 c1) c2 \ - fun `_` (X11 c0 c1 c2) c3 \ - app [global (indc «S»), global (indc «O»)]] + [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 +3 Query assignments: - T = fun `v` - (app - [global (indt «Vector.t»), global (indt «nat»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) - c0 \ - match c0 - (fun `_` (X7 c0) c1 \ - fun `v` - (app [global (indt «Vector.t»), global (indt «nat»), X8 c0 c1]) c2 \ - global (indt «nat»)) - [global (indc «O»), - fun `_` (X9 c0) c1 \ - fun `_` (X10 c0 c1) c2 \ - fun `_` (X11 c0 c1 c2) c3 \ - app [global (indc «S»), global (indc «O»)]] - _uvk_10_ = c0 \ c1 \ -global (indt «nat») - _uvk_11_ = c0 \ -X9 c0 - _uvk_12_ = c0 \ c1 \ -X10 c0 c1 - _uvk_13_ = c0 \ c1 \ c2 \ -X11 c0 c1 c2 - _uvk_7_ = c0 \ -X7 c0 - _uvk_8_ = c0 \ c1 \ -global (indt «nat») - _uvk_9_ = c0 \ c1 \ -X8 c0 c1 -Syntactic constraints: - {c0 c1 c2} : - decl c2 `y0` (X10 c0 c1), decl c1 `y` (X9 c0), - decl c0 `v` + X = 3 + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` (app - [global (indt «Vector.t»), global (indt «nat»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) - ?- evar (X11 c0 c1 c2) (sort (typ «elpi.tests.test_quotation.10»)) - (X11 c0 c1 c2) /* suspended on X11 */ - {c0 c1} : - decl c1 `y` (X9 c0), - decl c0 `v` + [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 «Vector.t»), global (indt «nat»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) - ?- evar (X10 c0 c1) (sort (typ «elpi.tests.test_quotation.9»)) - (X10 c0 c1) /* suspended on X10 */ - {c0} : - decl c0 `v` - (app - [global (indt «Vector.t»), global (indt «nat»), - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) - ?- evar (X9 c0) (sort (typ «elpi.tests.test_quotation.8»)) (X9 c0) /* suspended on X9 */ - {c0 c1} : - decl c1 `y` (X7 c0), - decl c0 `v` + [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 «Vector.t»), global (indt «nat»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) - ?- evar (X8 c0 c1) (X12 c0 c1) (X8 c0 c1) /* suspended on X8 */ - {c0 c1} : - decl c1 `y` (X7 c0), - decl c0 `v` + [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 «Vector.t»), global (indt «nat»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) - ?- evar (X13 c0 c1) (sort (typ «elpi.tests.test_quotation.6»)) - (X12 c0 c1) /* suspended on X13, X12 */ - {c0} : - decl c0 `v` - (app - [global (indt «Vector.t»), global (indt «nat»), - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) - ?- evar (X7 c0) (sort (typ «elpi.tests.test_quotation.4»)) (X7 c0) /* suspended on X7 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_quotation.12 elpi.tests.test_quotation.11 - elpi.tests.test_quotation.10 elpi.tests.test_quotation.9 - elpi.tests.test_quotation.8 elpi.tests.test_quotation.7 - elpi.tests.test_quotation.6 elpi.tests.test_quotation.5 - elpi.tests.test_quotation.4} |= - elpi.tests.test_quotation.11 < elpi.tests.test_quotation.5 - Set <= Vector.t.u0 - Set <= elpi.tests.test_quotation.11 - Set <= elpi.tests.test_quotation.12 - elpi.tests.test_quotation.11 <= Vector.t.u0 -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - elpi.tests.test_quotation.12 -SORTS: - α3 - α4 := Type - α5 - α6 - α7 - α8 - α9 -WEAK CONSTRAINTS: - + [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 Query assignments: I = «foo» ----<<---- enter: @@ -3548,6 +3670,57 @@ (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 + {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 ---->>---- exit: coq.env.add-const x1 (fun `P` (sort (typ «x1.u0»)) c0 \ @@ -3561,14 +3734,40 @@ prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X1 «x1» x1 : forall P : Type, P -> nat -> nat : forall P : Type, P -> nat -> nat +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: + + eq_refl : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) -«myfalse» -Query assignments: - F = indt «False» - GR = «myfalse» -myfalse - : False ----<<---- enter: coq.arity->term (parameter n explicit (global (indt «nat»)) c0 \ @@ -3617,7 +3816,6 @@ (prod `P` (sort (typ X0)) c0 \ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) (X3 c0 c1)) X4 X5) illtyped arity -Query assignments: ---->>---- exit: std.assert-ok! (coq.elaborate-ty-skeleton @@ -3627,7 +3825,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 - GR = «nat» ----<<---- enter: std.assert-ok! (coq.elaborate-skeleton @@ -3710,194 +3907,37 @@ coq.env.add-axiom y (prod `n` (global (indt «nat»)) c0 \ sort (typ «elpi.tests.test_arg_HOAS.112»)) X2 - {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 +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: + GR = indt «True» ---->>---- exit: coq.env.add-axiom y (prod `n` (global (indt «nat»)) c0 \ sort (typ «y.u0»)) «y» y : nat -> Type : nat -> Type - {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 ----<<---- enter: coq.arity->term (parameter n explicit (global (indt «nat»)) c0 \ arity (global (indt «nat»))) X0 - {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: ---->>---- exit: coq.arity->term (parameter n explicit (global (indt «nat»)) c0 \ arity (global (indt «nat»))) (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) -[] ----<<---- enter: std.assert-ok! (coq.typecheck (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»))) illtyped definition - - ---->>---- exit: std.assert-ok! (coq.typecheck @@ -3908,256 +3948,10 @@ 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 X2 -[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»))] ------------- ---->>---- exit: 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» -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: - MP_TA = «elpi.tests.test_API_module.TA» -Module Type TB = Funsig (A:TA) Sig End -Finished transaction in 7.016 secs (3.413u,0.026s) (successful) -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: - - -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.A» -Module IA := Struct Definition z : nat. Definition i : Type. End - -COQC tests/test_link_order7.v -COQC tests/test_param2.v -Query assignments: - U = «foo» -Unable to unify "bool" with "nat". -Query assignments: - Msg = Unable to unify "bool" with "nat". -COQC tests/test_link_order8.v -foo : nat - : nat -bar : bool -> nat - : bool -> nat -COQC tests/test_link_order9.v -Query assignments: - GR = const «myc» -eq_op myc t t - : bool -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 ) -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» -Query assignments: -foo1 ?A2 ?B1 ?B2 ?n : Type - : Type -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?n : [ |- nat] - GR = «Nat.add» - MP = «Coq.Init.Datatypes» -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] -3 -Query assignments: - X = 3 -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: - 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_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: - - -COQC tests/test_API_new_pred.v nth_R = fun (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0) (x2 : T1 x0 x1) => @@ -4282,151 +4076,173 @@ 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_link_order_import0.v +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 +add_equal 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» + 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 \ + 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]]] + 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 +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 _ _ +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 +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) + +*** [ B.w : nat ] +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: - {prim_eq_class.u1 prim_eq_class.u0} + {} UNDEFINED UNIVERSES: - prim_eq_class.u1 - prim_eq_class.u0 -SORTS: +SORTS: + α19 := Type WEAK CONSTRAINTS: -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 *) -Query assignments: - L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), - cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] -sort (typ X0) -Query assignments: - _uvk_129_ = X0 -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.IA» -i - : Type -COQC tests/test_vernacular2.v -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»] -Query assignments: - I = «eq» - P1 = «carrier» - P2 = «eq_op» -Query assignments: - I = «inductive_nup.r» - R = parameter A explicit (sort (typ «r.u0»)) c0 \ - parameter a explicit c0 c1 \ - record r (sort (typ «r.u0»)) R - (field [coercion reversible, canonical tt] f (prod `_` c0 c2 \ c0) c2 \ - field [coercion off, canonical tt] g c0 c3 \ - field [coercion off, canonical tt] p - (app [global (indt «eq»), c0, c1, c3]) c4 \ end-record) -Record r (A : Type) (a : A) : Type := R { f : A -> A; g : A; p : a = g }. - -Arguments r A%type_scope a -Arguments R A%type_scope a f%function_scope g p -test1 -str hello -str x -----<<---- enter: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) -raw: inductive X1 tt (arity (sort prop)) c0 \ [] ----->>---- exit: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) - Illtyped inductive declaration ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) - Illtyped inductive declaration -----<<---- enter: -coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) -typed: inductive X1 tt (arity (sort prop)) c0 \ [] ----->>---- exit: -coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) -----<<---- enter: -coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) X0 -test1 ----->>---- exit: -coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) «X1» -X1 : Prop - -X1 is not universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X1 -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] -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 +unknown_gref fun `x` X0 c0 \ app [X1, c0] Query assignments: X = X1 Y = fun `x` X0 c0 \ app [X1, c0] _uvk_34_ = X0 -File "./tests/test_param2.v", line 85, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -COQC tests/test_invert.v -COQC tests/test_ltac2.v -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: - GR = const «myc1» -eq_op myc1 t1 t1 - : bool -COQC tests/test_libobject_B.v + U = «foo» +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] fun `r` (global (indt «nat»)) c0 \ fun `p` (prod `y` (global (indt «nat»)) c1 \ @@ -4451,72 +4267,72 @@ prod `y` (global (indt «nat»)) c3 \ app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] -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) -Universe constraints: -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.TA» -Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End -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 ----------------------------------- - {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: - 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 */ + 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_HOAS.10} |= + {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: - α5 + WEAK CONSTRAINTS: -COQC tests/test_link_order_import1.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) +«myfalse» +Query assignments: + F = indt «False» + GR = «myfalse» +myfalse + : False +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] +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 +Unable to unify "bool" with "nat". +Query assignments: + Msg = Unable to unify "bool" with "nat". +Query assignments: + GR = «nat» Query assignments: GR = indc «Ord» K = global (indc «Ord») @@ -4618,76 +4434,295 @@ 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» + MP_TA = «elpi.tests.test_API_module.TA» +Module Type TB = Funsig (A:TA) Sig End +«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» +File "./tests/test_param2.v", line 85, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +Query assignments: + GR = const «myc» +eq_op myc t t + : bool +COQC tests/test_projK.v +COQC tests/test_eq.v +COQC tests/test_derive.v +COQC tests/test_param1.v +COQC tests/test_isK.v +Query assignments: + 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_elaborator.48 elpi.tests.test_elaborator.47} |= - elpi.tests.test_elaborator.47 < elpi.tests.test_elaborator.48 + {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: - {elpi.tests.test_elaborator.47} + {} UNDEFINED UNIVERSES: - elpi.tests.test_elaborator.47 -SORTS: +SORTS: + α3 := Type + α4 WEAK CONSTRAINTS: -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. +COQC tests/test_map.v +COQC tests/test_lens.v +COQC tests/test_tag.v +COQC tests/test_eqType_ast.v +foo : nat + : nat +bar : bool -> nat + : bool -> nat +sort (typ X0) +Query assignments: + _uvk_129_ = X0 +Query assignments: + I = «inductive_nup.r» + R = parameter A explicit (sort (typ «r.u0»)) c0 \ + parameter a explicit c0 c1 \ + record r (sort (typ «r.u0»)) R + (field [coercion reversible, canonical tt] f (prod `_` c0 c2 \ c0) c2 \ + field [coercion off, canonical tt] g c0 c3 \ + field [coercion off, canonical tt] p + (app [global (indt «eq»), c0, c1, c3]) c4 \ end-record) +Record r (A : Type) (a : A) : Type := R { f : A -> A; g : A; p : a = g }. -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 _ _ +Arguments r A%type_scope a +Arguments R A%type_scope a f%function_scope g p +----<<---- enter: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) +raw: inductive X1 tt (arity (sort prop)) c0 \ [] +---->>---- exit: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) + Illtyped inductive declaration +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) + Illtyped inductive declaration +----<<---- enter: +coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) +typed: inductive X1 tt (arity (sort prop)) c0 \ [] +---->>---- exit: +coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) +----<<---- enter: +coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) X0 +---->>---- exit: +coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) «X1» +X1 : Prop + +X1 is not universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X1 Query assignments: - C = «pc» -COQC tests/test_idx2inv.v -COQC tests/test_link_order_import2.v -global (indt «nat») + Spilled_1 = «elpi.tests.test_API_module.A» +Module IA := Struct Definition z : nat. Definition i : Type. End + +more : (forall A : Type, A -> tickle A -> tickle A) + : forall A : Type, A -> tickle A -> tickle A +tickle.eqb + : (forall A : Type, (A -> A -> bool) -> tickle A -> tickle A -> bool) + : forall A : Type, (A -> A -> bool) -> tickle A -> tickle A -> bool +tickle.eqb_OK + : (forall (A : Type) (f : A -> A -> bool), + (forall x y : A, reflect (x = y) (f x y)) -> + forall x y : tickle A, reflect (x = y) (tickle.eqb A f x y)) + : forall (A : Type) (f : A -> A -> bool), + (forall x y : A, reflect (x = y) (f x y)) -> + forall x y : tickle A, reflect (x = y) (tickle.eqb A f x y) +tickle.map : (forall A B : Type, (A -> B) -> tickle A -> tickle B) + : forall A B : Type, (A -> B) -> tickle A -> tickle B +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 +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: - T = global (indt «nat») - _uvk_5_ = global (indt «nat») - _uvk_6_ = global (indt «nat») + 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_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: + {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 ) +Starting module rtree +Declaring inductive +parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.194»)) + c0 \ + inductive rtree tt + (arity (sort (typ «elpi.apps.derive.examples.usage.195»))) c1 \ + [constructor Leaf (arity (prod `_` c0 c2 \ c1)), + constructor Node + (arity (prod `_` (app [global (indt «tickle.tickle»), c1]) c2 \ c1))] +[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 )] +Deriving +Derivation map on indt «rtree» +Derivation map on indt «rtree» took 0.005192 +Derivation lens on indt «rtree» +Derivation lens on indt «rtree» failed, continuing +Derivation param1 on indt «rtree» +Derivation param1 on indt «rtree» took 0.010557 +Derivation param2 on indt «rtree» +Derivation param2 on indt «rtree» took 0.012788 +Derivation tag on indt «rtree» +Derivation tag on indt «rtree» took 0.002879 +Derivation eqType_ast on indt «rtree» +Derivation eqType_ast on indt «rtree» took 0.001550 +Derivation lens_laws on indt «rtree» +Derivation lens_laws on indt «rtree» took 0.001224 +Derivation param1_congr on indt «rtree» +Derivation param1_congr on indt «rtree» took 0.006521 +Derivation param1_inhab on indt «rtree» +Derivation param1_inhab on indt «rtree» took 0.006621 +Derivation param1_functor on indt «rtree» +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: - α3 := Type - α4 := Type - α5 := Type + α1 := Type + α2 := Type WEAK CONSTRAINTS: +Derivation param1_functor on indt «rtree» took 0.007992 +Derivation fields on indt «rtree» +Query assignments: + L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), + cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] +Derivation fields on indt «rtree» took 0.020175 +Derivation param1_trivial on indt «rtree» +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: + GR = «Nat.add» + MP = «Coq.Init.Datatypes» +Derivation param1 on const «Nat.add» +Derivation param1 on const «Nat.add» took 0.010311 +Derivation param2 on const «Nat.add» +Derivation param2 on const «Nat.add» took 0.011426 +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) +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» +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} +UNDEFINED UNIVERSES: + elpi.tests.test_elaborator.47 +SORTS: + +WEAK CONSTRAINTS: + + +Derivation param1_trivial on indt «rtree» took 0.173900 +Derivation induction on indt «rtree» +Derivation induction on indt «rtree» took 0.006088 +Derivation eqb on indt «rtree» +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.IA» +i + : Type +Derivation eqb on indt «rtree» took 0.024082 +Derivation eqbcorrect on indt «rtree» +Query assignments: + I = «eq» + P1 = «carrier» + P2 = «eq_op» +Derivation eqbcorrect on indt «rtree» took 0.055327 +Derivation eqbOK on indt «rtree» ----<<---- enter: coq.say raw: (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.128»))) c0 \ @@ -4700,6 +4735,8 @@ (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.128»))) c0 \ []) (upoly-decl [«elpi.tests.test_arg_HOAS.128»] tt [] tt) ----<<---- enter: coq.univ.print +Derivation eqbOK on indt «rtree» took 0.002790 +Done Universe constraints: UNIVERSES: {eu1} |= ALGEBRAIC UNIVERSES: @@ -4746,18 +4783,16 @@ coq.env.add-indt (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.128»))) c0 \ []) X1 -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] ---->>---- exit: get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.128»] tt [] tt) => coq.env.add-indt (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.128»))) c0 \ []) «X3» -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] + 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 ----<<---- enter: coq.say raw: (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.136»))) c0 \ @@ -4816,6 +4851,8 @@ coq.env.add-indt (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.136»))) c0 \ []) X1 +eq_refl : one = 1 + : one = 1 ---->>---- exit: get-option coq:udecl-cumul (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.136»] tt [] tt) => @@ -4832,62 +4869,149 @@ X4 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X4 - 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 -COQC tests/test_lens.v -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 +rtree.induction + : (forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), + (forall a : A, PA a -> P (Leaf A a)) -> + (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) + : forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), + (forall a : A, PA a -> P (Leaf A a)) -> + (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 +_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 +Starting module Box +Declaring inductive +parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.387»)) + c0 \ + record Box (sort (typ «elpi.apps.derive.examples.usage.388»)) Build_Box + (field [coercion off, canonical tt] contents c0 c1 \ + field [coercion off, canonical tt] tag (global (indt «nat»)) c2 \ + end-record) +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.006722 +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.003006 +Derivation eqType_ast on indt «Box» +Derivation eqType_ast on indt «Box» took 0.001705 +Derivation lens_laws on indt «Box» Query assignments: - P = const «eq_op» + 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»] +Derivation lens_laws on indt «Box» took 0.016446 +Skipping derivation param1_congr on indt «Box» +since the user did not select it +Skipping derivation param1_inhab on indt «Box» +since the user did not select it +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.007597 +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» +Derivation eqb on indt «Box» took 0.006627 +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 +Done +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» Universe constraints: UNIVERSES: ALGEBRAIC UNIVERSES: - {myind.u0} + {prim_eq_class.u1 prim_eq_class.u0} UNDEFINED UNIVERSES: - myind.u0 + prim_eq_class.u1 + prim_eq_class.u0 SORTS: WEAK CONSTRAINTS: -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 -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 +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 *) +Box.eqb : (forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool) + : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool +@Box._tag : (forall A : Type, Lens (Box A) (Box A) nat nat) + : forall A : Type, Lens (Box A) (Box A) nat nat +Box._tag_set_set + : (forall (A : Type) (r : Box A) (y x : nat), + set Box._tag x (set Box._tag y r) = set Box._tag x r) + : forall (A : Type) (r : Box A) (y x : nat), + set Box._tag x (set Box._tag y r) = set Box._tag x r +Box._tag_contents_exchange + : (forall (A : Type) (r : Box A) (x : nat) (y : A), + set Box._tag x (set Box._contents y r) = + set Box._contents y (set Box._tag x r)) + : forall (A : Type) (r : Box A) (x : nat) (y : A), + set Box._tag x (set Box._contents y r) = + set Box._contents y (set Box._tag x r) +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) +COQC tests/test_lens_laws.v +Derivation map on indt «a» +Derivation map on indt «a» took 0.003307 +Derivation lens on indt «a» +Derivation lens on indt «a» failed, continuing +Derivation param1 on indt «a» +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.TA» +Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End +Derivation param1 on indt «a» took 0.023756 +Derivation param2 on indt «a» +Derivation param2 on indt «a» took 0.008906 +Derivation tag on indt «a» +Derivation tag on indt «a» took 0.002608 +Derivation eqType_ast on indt «a» +Derivation eqType_ast on indt «a» took 0.001475 +Derivation lens_laws on indt «a» +Derivation lens_laws on indt «a» took 0.001376 +Derivation param1_congr on indt «a» +Derivation param1_congr on indt «a» took 0.001707 +Derivation param1_inhab on indt «a» +Derivation param1_inhab on indt «a» took 0.003231 +Derivation param1_functor on indt «a» Query assignments: S = sort (typ «elpi.tests.test_elaborator.50») T = sort (typ «elpi.tests.test_elaborator.49») @@ -4911,42 +5035,99 @@ WEAK CONSTRAINTS: -COQC tests/test_tag.v +Derivation param1_functor on indt «a» took 0.003296 +Derivation fields on indt «a» +Derivation fields on indt «a» took 0.005802 +Derivation param1_trivial on indt «a» +Derivation param1_trivial on indt «a» took 0.003850 +Derivation induction on indt «a» +Derivation induction on indt «a» took 0.002558 +Derivation eqb on indt «a» +Derivation eqb on indt «a» took 0.005429 +Derivation eqbcorrect on indt «a» +Derivation eqbcorrect on indt «a» took 0.007562 +Derivation eqbOK on indt «a» +Derivation eqbOK on indt «a» took 0.002190 +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.008056 +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.002460 +Derivation eqType_ast on indt «b» +Derivation eqType_ast on indt «b» took 0.001484 +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.003497 +Derivation param1_functor on indt «b» +Derivation param1_functor on indt «b» took 0.003001 +Derivation fields on indt «b» Query assignments: - X = «elpi.tests.test_API.1» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API.1} |= -ALGEBRAIC UNIVERSES: - {} -UNDEFINED UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - + GR = const «myc1» +eq_op myc1 t1 t1 + : bool +Derivation fields on indt «b» took 0.005857 +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.002450 +Derivation eqb on indt «b» +Derivation eqb on indt «b» took 0.005332 +Derivation eqbcorrect on indt «b» +Derivation eqbcorrect on indt «b» took 0.007262 +Derivation eqbOK on indt «b» +Derivation eqbOK on indt «b» took 0.001953 +a_eqb + : a -> a -> bool +b_eqb + : b -> b -> bool +---------------------------------- + {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) -COQC tests/test_eqType_ast.v -«elpi.tests.test_API_typecheck.10» +SHELF: +FUTURE GOALS STACK:?X11 +?X10 + +Coq-Elpi mapping: +RAW: +?X10 <-> X0 +?X11 <-> X2 +ELAB: +?X10 <-> X1 +?X11 <-> X2 + +X2 c0 : X1 Query assignments: - U = «elpi.tests.test_API_typecheck.10» + 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_typecheck.10} |= - Set <= elpi.tests.test_API_typecheck.10 + {elpi.tests.test_HOAS.10} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_typecheck.10} + {} UNDEFINED UNIVERSES: - elpi.tests.test_API_typecheck.10 -SORTS: +SORTS: + α5 WEAK CONSTRAINTS: -Query q X0 -Query r X0 -Result r 1 -COQC examples/usage.v +Universe constraints: Query assignments: GR = indt «X3» Universe constraints: @@ -4976,106 +5157,222 @@ P2 = «elpi.tests.test_API_module.R.P2» R = «elpi.tests.test_API_module.R» S = «elpi.tests.test_API_module.R.S» -[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 examples/readme.v -COQC tests/test_libobject_C.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») Query assignments: - W = const «W» -Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). + 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: + + +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] +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: - E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). -_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 + X = sort (typ X0) + _uvk_133_ = X0 Query assignments: - _uvk_6_ = «nuind.u0» - _uvk_7_ = «nuind.u1» + P = const «eq_op» +Query assignments: + X = «elpi.tests.test_API.1» Universe constraints: UNIVERSES: + {elpi.tests.test_API.1} |= +ALGEBRAIC UNIVERSES: + {} +UNDEFINED UNIVERSES: + +SORTS: +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 +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) +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 +empty_map : map empty + : map empty +empty_tag : tag empty + : tag empty +unit_map : map unit + : map unit +unit_tag : tag unit + : tag unit +peano_tag : tag peano + : tag peano +peano_map : map peano + : map peano +option_map : map1 option + : map1 option +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) +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_tag : forall A : Type, tag (seq A) + : forall A : Type, tag (seq A) +seq_map : map1 seq + : map1 seq +rose_tag : forall A : Type, tag (rose A) + : forall A : Type, tag (rose A) +rose_map : map1 rose + : map1 rose +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 +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 +COQC tests/test_fields.v +[(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] +«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: - {nuind.u1 nuind.u0} + {elpi.tests.test_API_typecheck.10} UNDEFINED UNIVERSES: - nuind.u1 - nuind.u0 + elpi.tests.test_API_typecheck.10 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 -COQC tests/test_projK.v -COQC tests/test_derive.v -global (indc «O») -COQC tests/test_eq.v Query assignments: GR = indt «X4» Universe constraints: @@ -5154,6 +5451,8 @@ coq.env.add-indt (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.146»))) c0 \ []) «X5» +Query assignments: + W = const «W» X5@{eu3} : Type@{eu3} (* eu3 |= *) @@ -5255,7 +5554,6 @@ [constructor K (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.154»)) c1 \ c0))]) X1 -COQC tests/test_isK.v ---->>---- exit: get-option coq:udecl (upoly-decl @@ -5296,10 +5594,27 @@ c0 \ []) (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.170»))) c0 \ [])) Illtyped inductive declaration +Query assignments: + X = sort (typ «elpi.tests.test_elaborator.53») + Y = sort (typ «elpi.tests.test_elaborator.54») ----<<---- enter: coq.say typed: (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.170»))) c0 \ []) +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: + + typed: inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.170»))) c0 \ [] ---->>---- exit: @@ -5315,9 +5630,6 @@ coq.env.add-indt (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.170»))) c0 \ []) X3 -app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] ---->>---- exit: get-option coq:udecl (upoly-decl [] tt [] tt) => coq.env.add-indt @@ -5328,12 +5640,6 @@ X8 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X8 -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 ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.178»)) c0 \ @@ -5512,6 +5818,66 @@ Arguments f3 T%type_scope x f3 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f3 +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») +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: + +SORTS: + +WEAK CONSTRAINTS: + + ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.184»)) c0 \ @@ -5600,6 +5966,8 @@ Arguments f4 (T T1)%type_scope x f4 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f4 +Query assignments: + C = «pc» ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «uuu»)) c0 \ @@ -5800,8 +6168,6 @@ coq.env.add-const f8 (pglobal (const «f6») «Set») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) X7 «f8» -COQC tests/test_link_order_import3.v -COQC tests/test_param1.v ----<<---- enter: coq.arity->term (arity @@ -5977,18 +6343,129 @@ (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ prod `x` c0 c2 \ c0) X7 «f8''» +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). +_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 +1356 + : nat +_pf4_pf3_exchange : forall A : Type, exchange _pf4 _pf3 + : forall A : Type, exchange _pf4 _pf3 +this 3 app [c4, X0 c0 c1 c2 c3 c4] +app [c3, app [c1, c2], global (const «a»)] foo.bar [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» +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: - X = typ «elpi.tests.test_API.2» - Y = typ «elpi.tests.test_API.3» + X = typ «elpi.tests.test_API.4» + Y = typ «elpi.tests.test_API.5» 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_API.5 elpi.tests.test_API.4} |= + elpi.tests.test_API.4 <= elpi.tests.test_API.5 ALGEBRAIC UNIVERSES: {} UNDEFINED UNIVERSES: @@ -6070,9 +6547,47 @@ global (indt «nat») _uvk_52_ = c0 \ c1 \ c2 \ c3 \ global (indt «nat») -c0 global (indt «nat») +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {myind.u0} +UNDEFINED UNIVERSES: + myind.u0 +SORTS: + +WEAK CONSTRAINTS: + + +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 Query assignments: - T = global (indt «nat») + 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 */ const-decl D (some (fun `i` (global (indt «I»)) c0 \ @@ -6094,30 +6609,17 @@ parameter H maximal (app [global (indt «L»), c0]) c1 \ parameter n explicit (global (indt «nat»)) c2 \ arity (sort prop)) 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: - - -COQC tests/test_map.v + P = const «eq_op» + W = indt «nat» Query assignments: - X = typ «elpi.tests.test_API.4» - Y = typ «elpi.tests.test_API.5» + 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.5 elpi.tests.test_API.4} |= - elpi.tests.test_API.4 <= elpi.tests.test_API.5 + {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: @@ -6128,9 +6630,6 @@ Query assignments: - P = const «eq_op» - W = indt «nat» -Query assignments: C = «Nat.add» F = TODO T = match (app [global (indc «S»), global (indc «O»)]) @@ -6192,404 +6691,22 @@ global (indt «nat») _uvk_61_ = c0 \ c1 \ c2 \ c3 \ global (indt «nat») -[(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] -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 = 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»)]]] -COQC tests/test_lens_laws.v -more : (forall A : Type, A -> tickle A -> tickle A) - : forall A : Type, A -> tickle A -> tickle A -tickle.eqb - : (forall A : Type, (A -> A -> bool) -> tickle A -> tickle A -> bool) - : forall A : Type, (A -> A -> bool) -> tickle A -> tickle A -> bool -tickle.eqb_OK - : (forall (A : Type) (f : A -> A -> bool), - (forall x y : A, reflect (x = y) (f x y)) -> - forall x y : tickle A, reflect (x = y) (tickle.eqb A f x y)) - : forall (A : Type) (f : A -> A -> bool), - (forall x y : A, reflect (x = y) (f x y)) -> - forall x y : tickle A, reflect (x = y) (tickle.eqb A f x y) -tickle.map : (forall A B : Type, (A -> B) -> tickle A -> tickle B) - : forall A B : Type, (A -> B) -> tickle A -> tickle B -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 -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 \ - 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 */ -Starting module rtree -Declaring inductive -parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.194»)) - c0 \ - inductive rtree tt - (arity (sort (typ «elpi.apps.derive.examples.usage.195»))) c1 \ - [constructor Leaf (arity (prod `_` c0 c2 \ c1)), - constructor Node - (arity (prod `_` (app [global (indt «tickle.tickle»), c1]) c2 \ c1))] -Deriving -Derivation map on indt «rtree» -Derivation map on indt «rtree» took 0.011927 -Derivation lens on indt «rtree» -Derivation lens on indt «rtree» failed, continuing -Derivation param1 on indt «rtree» -Derivation param1 on indt «rtree» took 0.025118 -Derivation param2 on indt «rtree» -Derivation param2 on indt «rtree» took 0.031107 -Derivation tag on indt «rtree» -Derivation tag on indt «rtree» took 0.005948 -Derivation eqType_ast on indt «rtree» -Derivation eqType_ast on indt «rtree» took 0.003291 -Derivation lens_laws on indt «rtree» -Derivation lens_laws on indt «rtree» took 0.002287 -Derivation param1_congr on indt «rtree» -Derivation param1_congr on indt «rtree» took 0.009476 -Derivation param1_inhab on indt «rtree» -Derivation param1_inhab on indt «rtree» took 0.009008 -Derivation param1_functor on indt «rtree» -Derivation param1_functor on indt «rtree» took 0.009726 -Derivation fields on indt «rtree» -Derivation fields on indt «rtree» took 0.032284 -Derivation param1_trivial on indt «rtree» -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 -Derivation param1_trivial on indt «rtree» took 0.216563 -Derivation induction on indt «rtree» -Derivation induction on indt «rtree» took 0.007365 -Derivation eqb on indt «rtree» -Derivation eqb on indt «rtree» took 0.025348 -Derivation eqbcorrect on indt «rtree» -Derivation param1 on const «Nat.add» -Derivation eqbcorrect on indt «rtree» took 0.072051 -Derivation eqbOK on indt «rtree» -Derivation eqbOK on indt «rtree» took 0.005832 -Done -rtree.induction - : (forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), - (forall a : A, PA a -> P (Leaf A a)) -> - (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) - : forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), - (forall a : A, PA a -> P (Leaf A a)) -> - (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 -Derivation param1 on const «Nat.add» took 0.060934 -Derivation param2 on const «Nat.add» Query assignments: - X = typ «elpi.tests.test_API.6» - Y = typ «elpi.tests.test_API.7» - Z = typ «elpi.tests.test_API.8» + _uvk_6_ = «nuind.u0» + _uvk_7_ = «nuind.u1» 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: - {} + {nuind.u1 nuind.u0} UNDEFINED UNIVERSES: - + nuind.u1 + nuind.u0 SORTS: WEAK CONSTRAINTS: -Derivation param2 on const «Nat.add» took 0.028622 -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) -Starting module Box -Declaring inductive -parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.387»)) - c0 \ - record Box (sort (typ «elpi.apps.derive.examples.usage.388»)) Build_Box - (field [coercion off, canonical tt] contents c0 c1 \ - field [coercion off, canonical tt] tag (global (indt «nat»)) c2 \ - end-record) -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: - - -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]) -COQC tests/test_fields.v -Deriving -Skipping derivation map on indt «Box» since the user did not select it -Derivation lens on indt «Box» -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]) -Derivation lens on indt «Box» took 0.016480 -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.006400 -Derivation eqType_ast on indt «Box» -Derivation eqType_ast on indt «Box» took 0.002762 -Derivation lens_laws on indt «Box» -Derivation lens_laws on indt «Box» took 0.036001 -Skipping derivation param1_congr on indt «Box» -since the user did not select it -Skipping derivation param1_inhab on indt «Box» -since the user did not select it -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.015623 -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» -Derivation eqb on indt «Box» took 0.014168 -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 -Done -Box.eqb : (forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool) - : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool -@Box._tag : (forall A : Type, Lens (Box A) (Box A) nat nat) - : forall A : Type, Lens (Box A) (Box A) nat nat -Box._tag_set_set - : (forall (A : Type) (r : Box A) (y x : nat), - set Box._tag x (set Box._tag y r) = set Box._tag x r) - : forall (A : Type) (r : Box A) (y x : nat), - set Box._tag x (set Box._tag y r) = set Box._tag x r -Box._tag_contents_exchange - : (forall (A : Type) (r : Box A) (x : nat) (y : A), - set Box._tag x (set Box._contents y r) = - set Box._contents y (set Box._tag x r)) - : forall (A : Type) (r : Box A) (x : nat) (y : A), - set Box._tag x (set Box._contents y r) = - set Box._contents y (set Box._tag x r) -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.011231 -Derivation lens on indt «a» -Derivation lens on indt «a» failed, continuing -Derivation param1 on indt «a» -Derivation param1 on indt «a» took 0.059333 -Derivation param2 on indt «a» -Derivation param2 on indt «a» took 0.015926 -Derivation tag on indt «a» -Derivation tag on indt «a» took 0.004647 -Derivation eqType_ast on indt «a» -Derivation eqType_ast on indt «a» took 0.003425 -Derivation lens_laws on indt «a» -Derivation lens_laws on indt «a» took 0.002574 -Derivation param1_congr on indt «a» -Derivation param1_congr on indt «a» took 0.003127 -Derivation param1_inhab on indt «a» -Derivation param1_inhab on indt «a» took 0.006191 -Derivation param1_functor on indt «a» -Derivation param1_functor on indt «a» took 0.006110 -Derivation fields on indt «a» -Derivation fields on indt «a» took 0.010334 -Derivation param1_trivial on indt «a» -Derivation param1_trivial on indt «a» took 0.008291 -Derivation induction on indt «a» -Derivation induction on indt «a» took 0.004539 -Derivation eqb on indt «a» -Derivation eqb on indt «a» took 0.010033 -Derivation eqbcorrect on indt «a» -Derivation eqbcorrect on indt «a» took 0.013265 -Derivation eqbOK on indt «a» -Derivation eqbOK on indt «a» took 0.003724 -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.013145 -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.004865 -Derivation eqType_ast on indt «b» -Derivation eqType_ast on indt «b» took 0.003103 -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.007223 -Derivation param1_functor on indt «b» -Derivation param1_functor on indt «b» took 0.006730 -Derivation fields on indt «b» -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 -Derivation fields on indt «b» took 0.013566 -Skipping derivation param1_trivial on indt «b» -since the user did not select it -Derivation induction on indt «b» -fun x : C1 => x 3 - : C1 -> nat -Derivation induction on indt «b» took 0.005912 -Derivation eqb on indt «b» -Derivation eqb on indt «b» took 0.011452 -Derivation eqbcorrect on indt «b» -Derivation eqbcorrect on indt «b» took 0.016125 -Derivation eqbOK on indt «b» -Derivation eqbOK on indt «b» took 0.003896 -a_eqb - : a -> a -> bool -b_eqb - : b -> b -> bool Query assignments: R = app [global (indc «ex_intro»), global (indt «nat»), @@ -6602,292 +6719,23 @@ app [global (indt «eq»), global (indt «nat»), c0, c0]] _uvk_164_ = X0 _uvk_165_ = X1 -1356 - : nat -this 3 app [c4, X0 c0 c1 c2 c3 c4] -app [c3, app [c1, c2], global (const «a»)] foo.bar -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»))] -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 -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 -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: - - -_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 -Query assignments: -_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 - 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: - - -_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 -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: - - -empty_eq : eq_test empty - : eq_test empty -unit_eq : eq_test unit - : eq_test unit +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 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: - - -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) -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 + 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 [trm c0, trm (app [global (const «Nat.add»), c0, c1])] {c0 c1} : decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) @@ -6903,34 +6751,34 @@ {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 */ -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: - - [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 */ +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) [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 */ +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) [trm (app [global (const «Nat.add»), X0 c0 c1, c1])] {c0 c1} : decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) @@ -6946,6 +6794,19 @@ {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 */ +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»)]]] [trm c0] {c0 c1} : decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) @@ -6954,18 +6815,51 @@ {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 */ +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) [int -1] +is_dyn : pred dyn + : pred dyn {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 */ +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 [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 */ +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 [str a] +is_ord : forall p : peano, is_peano p -> pred (ord p) + : forall p : peano, is_peano p -> pred (ord p) {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 */ +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 [str x] {c0 c1} : decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) @@ -6987,6 +6881,139 @@ 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 */ 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: + + +c0 global (indt «nat») +Query assignments: + T = global (indt «nat») +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»))] +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: + + +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: + 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: + + +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 +Query assignments: R = app [global (indc «ex_intro»), global (indt «nat»), fun `n` (global (indt «nat»)) c0 \ @@ -7018,33 +7045,6 @@ WEAK CONSTRAINTS: -app - [pglobal (const «t») X0, global (indt «nat»), - pglobal (const «fnat») X1] -app - [pglobal (const «t») «elpi.tests.test_HOAS.29», global (indt «nat»), - pglobal (const «fnat») «»] -Query assignments: - T = app - [pglobal (const «t») «elpi.tests.test_HOAS.29», global (indt «nat»), - pglobal (const «fnat») «»] - Ty = global (indt «nat») - _uvk_64_ = «elpi.tests.test_HOAS.29» - _uvk_65_ = «» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.29} |= - Set <= elpi.tests.test_HOAS.29 - Set = elpi.tests.test_HOAS.29 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.29} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.29 := Set -SORTS: - -WEAK CONSTRAINTS: - - Query assignments: D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ parameter a explicit c0 c1 \ @@ -7053,13 +7053,13 @@ 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 \ + 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 \ - parameter bb implicit (app [global (indt «prod»), c3, c3]) c5 \ - arity - (prod `_` + 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 \ @@ -7078,13 +7078,13 @@ 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 \ + 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 \ - parameter bb implicit (app [global (indt «prod»), c3, c3]) c5 \ - arity - (prod `_` + 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 \ @@ -7097,7 +7097,7 @@ [c2, c3, c4, global (indt «nat»), app [global (indc «S»), global (indc «O»)]]))] I = «ind1» - U = «elpi.tests.test_API_env.27» + U = «elpi.tests.test_API_env.26» UA = «elpi.tests.test_API_env.20» UB1 = «ind1.u0» UB2 = «ind1.u0» @@ -7105,9 +7105,9 @@ 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 + {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: @@ -7117,381 +7117,6 @@ 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» -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 -Query assignments: - A4 = «elpi.tests.test_HOAS.36» - A5 = «elpi.tests.test_HOAS.37» - A6 = «elpi.tests.test_HOAS.38» - A7 = «elpi.tests.test_HOAS.39» - A8 = «elpi.tests.test_HOAS.40» - Arity = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ - sort (typ «elpi.tests.test_HOAS.30») - Arity1 = prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ - sort (typ «elpi.tests.test_HOAS.31») - Arity2 = prod `T` (sort (typ «elpi.tests.test_HOAS.32»)) c0 \ - sort (typ «elpi.tests.test_HOAS.32») - Arity4 = prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ - sort (typ «elpi.tests.test_HOAS.36») - Arity5 = prod `T` (sort (typ «elpi.tests.test_HOAS.37»)) c0 \ - sort (typ «elpi.tests.test_HOAS.37») - B = «Build_F» - B1 = «elpi.tests.test_HOAS.43» - B2 = «elpi.tests.test_HOAS.44» - BTy2 = prod `T` (sort (typ «elpi.tests.test_HOAS.42»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.42», c0] - BTy3 = prod `T` (sort (typ «elpi.tests.test_HOAS.43»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.43», c0] - BoN = none - BoT = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT1 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) -unit_is_tt : unit -> bool - : unit -> bool - BoT2 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.47»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT4 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT5 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.50»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT6 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.64»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT7 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.66»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - C1 = «elpi.tests.test_HOAS.54» - C2 = «elpi.tests.test_HOAS.55» - C3 = «elpi.tests.test_HOAS.58» - C4 = «elpi.tests.test_HOAS.59» - C5 = «elpi.tests.test_HOAS.62» - C6 = «elpi.tests.test_HOAS.63» - D1 = «elpi.tests.test_HOAS.49» - D2 = «elpi.tests.test_HOAS.50» - D3 = «elpi.tests.test_HOAS.51» - D4 = X0 - E5 = «elpi.tests.test_HOAS.66» - E6 = «elpi.tests.test_HOAS.67» - GRB = indc «Build_F» - GRF = indt «F» - GRn = const «n» - GRt = const «t» - I = «elpi.tests.test_HOAS.30» - I2 = «elpi.tests.test_HOAS.41» - I3 = «elpi.tests.test_HOAS.45» - I4 = «» - Ind = «F» - K = [«Build_F»] - KTys = [prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.30», c0]] - KTys1 = [prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.31», c0]] - KTys3 = [prod `T` (sort (typ «elpi.tests.test_HOAS.33»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.33», c0]] -peano_is_Zero : peano -> bool - : peano -> bool - KTys4 = [prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.36», c0]] - KTys6 = [prod `T` (sort (typ «elpi.tests.test_HOAS.38»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.38», c0]] - N = «n» - 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] - 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 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.58», c0] - TyF = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ - sort (typ «elpi.tests.test_HOAS.30») - TyF2 = prod `T` (sort (typ «elpi.tests.test_HOAS.52»)) c0 \ - sort (typ «elpi.tests.test_HOAS.52») - TyF3 = prod `T` (sort (typ «elpi.tests.test_HOAS.54»)) c0 \ - sort (typ «elpi.tests.test_HOAS.54») - TyN = global (indt «nat») - TyT = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ - c0 - TyT1 = prod `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ - c0 - TyT3 = prod `T` (sort (typ «elpi.tests.test_HOAS.48»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.48», c0]) c1 \ - c0 - TyT4 = prod `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ - c0 - TyT5 = prod `T` (sort (typ «elpi.tests.test_HOAS.51»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.51», c0]) c1 \ - c0 - TyT6 = prod `T` (sort (typ «elpi.tests.test_HOAS.60»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.60», c0]) c1 \ - c0 -peano_is_Succ : peano -> bool - : peano -> bool - TyT7 = prod `T` (sort (typ «elpi.tests.test_HOAS.62»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.62», c0]) c1 \ - c0 - Tyt = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ - c0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.67 elpi.tests.test_HOAS.66 elpi.tests.test_HOAS.65 - elpi.tests.test_HOAS.64 elpi.tests.test_HOAS.63 elpi.tests.test_HOAS.62 - elpi.tests.test_HOAS.61 elpi.tests.test_HOAS.60 elpi.tests.test_HOAS.59 - elpi.tests.test_HOAS.58 elpi.tests.test_HOAS.57 elpi.tests.test_HOAS.56 - elpi.tests.test_HOAS.55 elpi.tests.test_HOAS.54 elpi.tests.test_HOAS.53 - elpi.tests.test_HOAS.52 elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.50 - elpi.tests.test_HOAS.49 elpi.tests.test_HOAS.48 elpi.tests.test_HOAS.47 - elpi.tests.test_HOAS.46 elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 - elpi.tests.test_HOAS.43 elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 - elpi.tests.test_HOAS.40 elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 - elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 - elpi.tests.test_HOAS.34 elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 - elpi.tests.test_HOAS.31 elpi.tests.test_HOAS.30} |= - -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 elpi.tests.test_HOAS.43 - elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40 - elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 elpi.tests.test_HOAS.34 - elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 elpi.tests.test_HOAS.31 - elpi.tests.test_HOAS.30} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.45 - elpi.tests.test_HOAS.44 - elpi.tests.test_HOAS.43 - elpi.tests.test_HOAS.42 - elpi.tests.test_HOAS.41 - elpi.tests.test_HOAS.40 - elpi.tests.test_HOAS.39 - elpi.tests.test_HOAS.38 - elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 - elpi.tests.test_HOAS.35 - elpi.tests.test_HOAS.34 - elpi.tests.test_HOAS.33 - elpi.tests.test_HOAS.32 - elpi.tests.test_HOAS.31 - elpi.tests.test_HOAS.30 -SORTS: - -WEAK CONSTRAINTS: - - -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: - 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» -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» -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 300, column 10, character 6470:)] -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»)] -«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 - (field [coercion off, canonical tt] t c0 c1 \ end-record) -«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 - (field [coercion off, canonical tt] t c0 c1 \ end-record) -parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) -Query assignments: - Decl = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - Decl1 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - Decl2 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - GRF = indt «F» - I = «elpi.tests.test_HOAS.68» - Ind = «F» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.69 - elpi.tests.test_HOAS.68 -SORTS: - -WEAK CONSTRAINTS: - - empty_fields_t : positive -> Type : positive -> Type empty_fields : forall n : empty, empty_fields_t (empty_tag n) @@ -7604,6 +7229,9 @@ 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 +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 300, column 10, character 6470:)] 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) @@ -7753,57 +7381,47 @@ 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: + A = tt + B = 0 + C = 0 + D = sort (typ «Set») + E = [«true», «false»] + F = [global (indt «bool»), global (indt «bool»)] + GR = «bool» COQC tests/test_eqb.v -{{ nat; S; }} -{{ nat; S; }} Query assignments: - GR = const «Nat.add» - L = {{ nat; S; }} - S = {{ nat; S; }} -«elpi.tests.test_HOAS.70» «elpi.tests.test_HOAS.71» -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.71 - elpi.tests.test_HOAS.70 - SORTS: - - WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= - elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.71 - elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 - SORTS: - - WEAK CONSTRAINTS: - - + Y = global (indc «is_O») +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: - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.70» - I2 = «elpi.tests.test_HOAS.71» + 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.71 elpi.tests.test_HOAS.70} |= - elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 + {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} + {} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.71 - elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 + SORTS: WEAK CONSTRAINTS: +derive.param1_trivial: wrong shape is_nest +. It does not look like a unary parametricity translation of an inductive with no indexes. +[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] +[foo (indt «nat»), foo (indt «bool»)] +[] +[foo (indt «nat»)] Entry binder_constr is [ LEFTA [ "exists2"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; ","; term LEVEL @@ -7953,6 +7571,78 @@ | test_array_opening; "["; "|"; array_elems; "|"; lconstr; type_cstr; test_array_closing; "|"; "]"; univ_annot ] ] +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: + + [attribute elpi.loc (leaf-loc File "./tests/test_tactic.v", line 311, column 12, character 6723:)] @@ -7983,62 +7673,29 @@ (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:)] +pglobal (const «toto») X0 +pglobal (const «toto») «u1 u2» +toto Query assignments: - Y = global (indc «is_O») -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 -«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 = «» + 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.72} |= + {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} + {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.72 + elpi.tests.test_HOAS.24 + elpi.tests.test_HOAS.23 SORTS: WEAK CONSTRAINTS: Query assignments: + F = app [global (const «nat_of_bool»), global (indc «true»)] +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»)]] @@ -8058,28 +7715,12 @@ Arguments is_pred n%nat_scope Pn is_pred : is_nat2nat Nat.pred : is_nat2nat Nat.pred -{{ 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» is_predn : is_nat2nat predn : is_nat2nat predn is_add : is_nat2nat2nat Nat.add : is_nat2nat2nat Nat.add -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»))] +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), @@ -8089,48 +7730,260 @@ Arguments is_Bla _%nat_scope P_ Arguments is_Blu n%nat_scope Pn _ P_ 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»] + 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» +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»))] +app + [pglobal (const «t») X0, global (indt «nat»), + pglobal (const «fnat») X1] +app + [pglobal (const «t») «elpi.tests.test_HOAS.29», global (indt «nat»), + pglobal (const «fnat») «»] +Query assignments: + T = app + [pglobal (const «t») «elpi.tests.test_HOAS.29», global (indt «nat»), + pglobal (const «fnat») «»] + Ty = global (indt «nat») + _uvk_64_ = «elpi.tests.test_HOAS.29» + _uvk_65_ = «» Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.73} |= + {elpi.tests.test_HOAS.29} |= + Set <= elpi.tests.test_HOAS.29 + Set = elpi.tests.test_HOAS.29 ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.73} + {elpi.tests.test_HOAS.29} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.73 + elpi.tests.test_HOAS.29 := Set SORTS: WEAK CONSTRAINTS: +c0 \ app [global (const «nat_of_bool»), c0] Query assignments: Res = app - [global (const «Z_of_nat»), - app [global (const «nat_of_bool»), global (indc «true»)]] -Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because -elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 + [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 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 + 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: + A4 = «elpi.tests.test_HOAS.36» + A5 = «elpi.tests.test_HOAS.37» + A6 = «elpi.tests.test_HOAS.38» + A7 = «elpi.tests.test_HOAS.39» + A8 = «elpi.tests.test_HOAS.40» + Arity = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ + sort (typ «elpi.tests.test_HOAS.30») + Arity1 = prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ + sort (typ «elpi.tests.test_HOAS.31») + Arity2 = prod `T` (sort (typ «elpi.tests.test_HOAS.32»)) c0 \ + sort (typ «elpi.tests.test_HOAS.32») + Arity4 = prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ + sort (typ «elpi.tests.test_HOAS.36») + Arity5 = prod `T` (sort (typ «elpi.tests.test_HOAS.37»)) c0 \ + sort (typ «elpi.tests.test_HOAS.37») + B = «Build_F» + B1 = «elpi.tests.test_HOAS.43» + B2 = «elpi.tests.test_HOAS.44» + BTy2 = prod `T` (sort (typ «elpi.tests.test_HOAS.42»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.42», c0] + BTy3 = prod `T` (sort (typ «elpi.tests.test_HOAS.43»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.43», c0] + BoN = none + BoT = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT1 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT2 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.47»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT4 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT5 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.50»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT6 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.64»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT7 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.66»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + C1 = «elpi.tests.test_HOAS.54» + C2 = «elpi.tests.test_HOAS.55» + C3 = «elpi.tests.test_HOAS.58» + C4 = «elpi.tests.test_HOAS.59» + C5 = «elpi.tests.test_HOAS.62» + C6 = «elpi.tests.test_HOAS.63» + D1 = «elpi.tests.test_HOAS.49» + D2 = «elpi.tests.test_HOAS.50» + D3 = «elpi.tests.test_HOAS.51» + D4 = X0 + E5 = «elpi.tests.test_HOAS.66» + E6 = «elpi.tests.test_HOAS.67» + GRB = indc «Build_F» 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» + GRn = const «n» + GRt = const «t» + I = «elpi.tests.test_HOAS.30» + I2 = «elpi.tests.test_HOAS.41» + I3 = «elpi.tests.test_HOAS.45» + I4 = «» + Ind = «F» + K = [«Build_F»] + KTys = [prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.30», c0]] + KTys1 = [prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.31», c0]] + KTys3 = [prod `T` (sort (typ «elpi.tests.test_HOAS.33»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.33», c0]] + KTys4 = [prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.36», c0]] + KTys6 = [prod `T` (sort (typ «elpi.tests.test_HOAS.38»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.38», c0]] + N = «n» + 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] + 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 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.58», c0] + TyF = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ + sort (typ «elpi.tests.test_HOAS.30») + TyF2 = prod `T` (sort (typ «elpi.tests.test_HOAS.52»)) c0 \ + sort (typ «elpi.tests.test_HOAS.52») + TyF3 = prod `T` (sort (typ «elpi.tests.test_HOAS.54»)) c0 \ + sort (typ «elpi.tests.test_HOAS.54») + TyN = global (indt «nat») + TyT = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ + c0 + TyT1 = prod `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ + c0 + TyT3 = prod `T` (sort (typ «elpi.tests.test_HOAS.48»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.48», c0]) c1 \ + c0 + TyT4 = prod `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ + c0 + TyT5 = prod `T` (sort (typ «elpi.tests.test_HOAS.51»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.51», c0]) c1 \ + c0 + TyT6 = prod `T` (sort (typ «elpi.tests.test_HOAS.60»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.60», c0]) c1 \ + c0 + TyT7 = prod `T` (sort (typ «elpi.tests.test_HOAS.62»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.62», c0]) c1 \ + c0 + Tyt = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ + c0 Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} |= - elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 + {elpi.tests.test_HOAS.67 elpi.tests.test_HOAS.66 elpi.tests.test_HOAS.65 + elpi.tests.test_HOAS.64 elpi.tests.test_HOAS.63 elpi.tests.test_HOAS.62 + elpi.tests.test_HOAS.61 elpi.tests.test_HOAS.60 elpi.tests.test_HOAS.59 + elpi.tests.test_HOAS.58 elpi.tests.test_HOAS.57 elpi.tests.test_HOAS.56 + elpi.tests.test_HOAS.55 elpi.tests.test_HOAS.54 elpi.tests.test_HOAS.53 + elpi.tests.test_HOAS.52 elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.50 + elpi.tests.test_HOAS.49 elpi.tests.test_HOAS.48 elpi.tests.test_HOAS.47 + elpi.tests.test_HOAS.46 elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 + elpi.tests.test_HOAS.43 elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 + elpi.tests.test_HOAS.40 elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 + elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 + elpi.tests.test_HOAS.34 elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 + elpi.tests.test_HOAS.31 elpi.tests.test_HOAS.30} |= + ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} + {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 elpi.tests.test_HOAS.43 + elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40 + elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 elpi.tests.test_HOAS.34 + elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 elpi.tests.test_HOAS.31 + elpi.tests.test_HOAS.30} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.75 - elpi.tests.test_HOAS.74 + elpi.tests.test_HOAS.45 + elpi.tests.test_HOAS.44 + elpi.tests.test_HOAS.43 + elpi.tests.test_HOAS.42 + elpi.tests.test_HOAS.41 + elpi.tests.test_HOAS.40 + elpi.tests.test_HOAS.39 + elpi.tests.test_HOAS.38 + elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 + elpi.tests.test_HOAS.35 + elpi.tests.test_HOAS.34 + elpi.tests.test_HOAS.33 + elpi.tests.test_HOAS.32 + elpi.tests.test_HOAS.31 + elpi.tests.test_HOAS.30 SORTS: WEAK CONSTRAINTS: @@ -8283,19 +8136,64 @@ 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] -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 + [global (const «Z_of_nat»), + app [global (const «nat_of_bool»), global (indc «true»)]] +{{ nat; S; }} +{{ nat; S; }} +Query assignments: + GR = const «Nat.add» + L = {{ nat; S; }} + S = {{ nat; S; }} +«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 + (field [coercion off, canonical tt] t c0 c1 \ end-record) +«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 + (field [coercion off, canonical tt] t c0 c1 \ end-record) +parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) +Query assignments: + Decl = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + Decl1 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + Decl2 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + GRF = indt «F» + I = «elpi.tests.test_HOAS.68» + Ind = «F» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.69 + elpi.tests.test_HOAS.68 +SORTS: + +WEAK CONSTRAINTS: + + +{{ 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» +hello [int 1, int 2, trm (global (indt «nat»)), str x] empty_eqb : eq_test2 empty empty : eq_test2 empty empty unit_eqb : eq_test2 unit unit @@ -8312,8 +8210,6 @@ : forall A : Type, eq_test2 A A -> forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) -derive.param1_trivial: wrong shape is_nest -. It does not look like a unary parametricity translation of an inductive with no indexes. 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) @@ -8324,6 +8220,50 @@ : eq_test2 prim_int prim_int fo_record_eqb : eq_test2 fo_record fo_record : eq_test2 fo_record fo_record +«elpi.tests.test_HOAS.70» «elpi.tests.test_HOAS.71» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.71 + elpi.tests.test_HOAS.70 + SORTS: + + WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= + elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.71 + elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.70» + I2 = «elpi.tests.test_HOAS.71» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= + elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.71 + elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 +SORTS: + +WEAK CONSTRAINTS: + + pa_record_eqb : forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) @@ -8344,59 +8284,76 @@ : eq_test2 val val alias_eqb : eq_test2 alias alias : eq_test2 alias alias -hello [int 1, int 2, trm (global (indt «nat»)), str x] +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 +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 +«elpi.tests.test_HOAS.72» «» 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.72} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} + {elpi.tests.test_HOAS.72} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 + 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: - 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» + E = different universe instance lengths + GRF = indt «F» + GRfnat = const «fnat» + I1 = «elpi.tests.test_HOAS.72» + I2 = «» 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 + {elpi.tests.test_HOAS.72} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} + {elpi.tests.test_HOAS.72} UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 + 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. -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_API2.v Query assignments: R = prod `r` (global (const «ring»)) c0 \ prod `x` (app [global (const «carr»), c0]) c1 \ @@ -8422,7 +8379,169 @@ WEAK CONSTRAINTS: -COQC tests/test_API2.v +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: + 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: + + +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: + + +Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3354 <= Set +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: + T = global (const «int») + X = primitive (uint63 99) +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.003188 +Derivation isK on indt «nat» +Derivation isK on indt «nat» took 0.004500 +Derivation eq on indt «nat» +Derivation eq on indt «nat» took 0.003862 +Derivation invert on indt «nat» +Derivation invert on indt «nat» took 0.004797 +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.004861 +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.005531 +Skipping derivation eqbcorrect on indt «nat» since it has been already run +Derivation eqcorrect on indt «nat» +Derivation eqcorrect on indt «nat» took 0.001942 +Skipping derivation eqbOK on indt «nat» since it has been already run +Derivation eqOK on indt «nat» +Derivation eqOK on indt «nat» took 0.001598 +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 +Query assignments: + X1 = «x1» + X2 = «x2» + X3 = «x3» +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 Universe constraints: UNIVERSES: {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 @@ -8462,19 +8581,344 @@ WEAK CONSTRAINTS: -File "./tests/test_param1.v", line 176, characters 0-66: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -Query assignments: - GR = indt «nat» -COQC tests/test_param1_functor.v -COQC tests/test_param1_congr.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 +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 +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 +COQC tests/test_bcongr.v +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 +congr_is_tt : is_tt = is_tt + : is_tt = is_tt +congr_is_Zero : is_Zero = is_Zero + : is_Zero = is_Zero Query assignments: - X1 = «x1» - X2 = «x2» - X3 = «x3» + M = [[mode-ground], [mode-input]] +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 +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 +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 +COQC tests/test_induction.v +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 +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 +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 Query assignments: - T = global (const «int») - X = primitive (uint63 99) + GR = indt «nat» Query assignments: GR = const «Ranalysis5.derivable_pt_lim_CVU» S = {{ Field_theory.AF_1_neq_0; Field_theory.AF_AR; Field_theory.AFdiv_def; @@ -9888,9 +10332,11 @@ Ring_polynom.PEpow; RMicromega.CInv; Field_theory.FEdiv; Tauto.EQ; RMicromega.COpp; Field_theory.FEpow; }} Spilled_1 = 3373 - T = 4.852938 + T = 0.877590 +COQC tests/test_param1_trivial.v Query assignments: - M = [[mode-ground], [mode-input]] + T = global (const «float») + X = primitive (float64 993000) Query assignments: GR = indt «F» I = «elpi.tests.test_HOAS.82» @@ -9932,242 +10378,7 @@ Query assignments: - T = global (const «float») - X = primitive (float64 993000) -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 -Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3354 <= Set -COQC tests/test_bcongr.v -Query assignments: GR = indt «F» -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 -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 -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 -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 -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 -COQC tests/test_param1_trivial.v 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) @@ -10202,185 +10413,6 @@ 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 *) -1 -1 -1.000000 -1.2 -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 -Skipping derivation map on indt «nat» since it has been already run -Derivation lens on indt «nat» -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 -Derivation lens on indt «nat» failed, continuing -Skipping derivation param1 on indt «nat» since it has been already run -is_dyn_functor : func is_dyn - : func is_dyn -is_zeta_functor : func1 is_zeta - : func1 is_zeta -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.014302 -Derivation isK on indt «nat» -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 -Derivation isK on indt «nat» took 0.024884 -Derivation eq on indt «nat» -is_pa_record_functor : func1 is_pa_record - : func1 is_pa_record -Derivation eq on indt «nat» took 0.013393 -Derivation invert on indt «nat» -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) -Derivation invert on indt «nat» took 0.016304 -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» -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 -Derivation bcongr on indt «nat» took 0.021287 -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.017687 -Skipping derivation eqbcorrect on indt «nat» since it has been already run -Derivation eqcorrect on indt «nat» -Derivation eqcorrect on indt «nat» took 0.010442 -Skipping derivation eqbOK on indt «nat» since it has been already run -Derivation eqOK on indt «nat» -Derivation eqOK on indt «nat» took 0.006283 -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_induction.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 pglobal (indt «F») «elpi.tests.test_HOAS.84» «elpi.tests.test_HOAS.84» pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» @@ -10402,6 +10434,15 @@ WEAK CONSTRAINTS: +Query assignments: + _uvk_323_ = X0 +1 +1 +1.000000 +1.2 +Query assignments: + LP = «Coq.ZArith.Znat» + MP = «Coq.ZArith.Znat.N2Z» «elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» Query assignments: I = «elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» @@ -10418,315 +10459,9 @@ WEAK CONSTRAINTS: -Query assignments: - LP = «Coq.ZArith.Znat» - MP = «Coq.ZArith.Znat.N2Z» -Query assignments: - _uvk_323_ = X0 -Universe constraints: ------------------- -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} |= - elpi.tests.test_HOAS.86 < elpi.tests.test_HOAS.87 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.87 - elpi.tests.test_HOAS.86 - SORTS: - - WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} |= - elpi.tests.test_HOAS.86 < elpi.tests.test_HOAS.87 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.87 - elpi.tests.test_HOAS.86 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - Body = sort (typ «elpi.tests.test_HOAS.86») - LX = «elpi.tests.test_HOAS.86» - LY = «elpi.tests.test_HOAS.87» - Type = sort (typ «elpi.tests.test_HOAS.87») - UX = «elpi.tests.test_HOAS.86» - UY = «elpi.tests.test_HOAS.87» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} |= - elpi.tests.test_HOAS.86 < elpi.tests.test_HOAS.87 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.87 - elpi.tests.test_HOAS.86 -SORTS: - -WEAK CONSTRAINTS: - - -poly@{u u0} : Type@{u0} -(* u u0 |= u < u0 *) - -poly is universe polymorphic -poly is transparent -Expands to: Constant elpi.tests.test_HOAS.poly -poly@{Set -elpi.tests.test_HOAS.88} - : Type@{elpi.tests.test_HOAS.88} -(* {elpi.tests.test_HOAS.88} |= Set < elpi.tests.test_HOAS.88 *) -Box not a defined object. -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 -sort (typ «Set») -Query assignments: - U = «elpi.tests.test_HOAS.89» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.89} |= Set = elpi.tests.test_HOAS.89 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.89} -UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.89 := Set -SORTS: - -WEAK CONSTRAINTS: - - -Inductive tree@{u} (A : Type@{u}) : Type@{max(Set,u)} := - leaf : A -> tree@{u} A | node : A -> list (tree@{u} A) -> tree@{u} A. -(* u |= u <= list.u0 *) - -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] -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)), - constructor node - (arity - (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.103 elpi.tests.test_HOAS.102 - elpi.tests.test_HOAS.101 elpi.tests.test_HOAS.100 - elpi.tests.test_HOAS.99 elpi.tests.test_HOAS.98} |= - elpi.tests.test_HOAS.98 < elpi.tests.test_HOAS.100 - elpi.tests.test_HOAS.99 < elpi.tests.test_HOAS.101 - Set <= elpi.tests.test_HOAS.99 - Set <= elpi.tests.test_HOAS.103 - elpi.tests.test_HOAS.98 <= list.u0 - elpi.tests.test_HOAS.98 <= elpi.tests.test_HOAS.99 - elpi.tests.test_HOAS.98 <= elpi.tests.test_HOAS.102 - elpi.tests.test_HOAS.98 <= elpi.tests.test_HOAS.103 - elpi.tests.test_HOAS.99 <= list.u0 - elpi.tests.test_HOAS.99 <= elpi.tests.test_HOAS.102 - elpi.tests.test_HOAS.99 <= elpi.tests.test_HOAS.103 - elpi.tests.test_HOAS.102 <= elpi.tests.test_HOAS.99 - elpi.tests.test_HOAS.103 <= elpi.tests.test_HOAS.99 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.98} - UNDEFINED UNIVERSES: - elpi.tests.test_HOAS.98 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - D = parameter A explicit (sort (typ «M.tree.u0»)) c0 \ - inductive tree tt (arity (sort (typ «M.tree.u1»))) c1 \ - [constructor leaf (arity (prod `_` c0 c2 \ c1)), - constructor node - (arity - (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] - I = «tree» - _uvk_66_ = X0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.103 elpi.tests.test_HOAS.102 elpi.tests.test_HOAS.101 - elpi.tests.test_HOAS.100} |= - M.tree.u0 < elpi.tests.test_HOAS.100 - M.tree.u1 < elpi.tests.test_HOAS.101 - Set <= M.tree.u1 - Set <= elpi.tests.test_HOAS.103 - M.tree.u0 <= elpi.tests.test_HOAS.102 - M.tree.u0 <= elpi.tests.test_HOAS.103 - M.tree.u1 <= elpi.tests.test_HOAS.102 - M.tree.u1 <= elpi.tests.test_HOAS.103 - elpi.tests.test_HOAS.102 <= M.tree.u1 - elpi.tests.test_HOAS.103 <= M.tree.u1 -ALGEBRAIC UNIVERSES: - {M.tree.u0} -UNDEFINED UNIVERSES: - M.tree.u0 -SORTS: - -WEAK CONSTRAINTS: - - 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) -File "./tests/test_API2.v", line 134, characters 0-14: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] (fun P : empty -> Prop => empty_induction P) : forall (P : empty -> Prop) (x : empty), is_empty x -> P x @@ -11397,6 +11132,339 @@ 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 +Universe constraints: +------------------ +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} |= + elpi.tests.test_HOAS.86 < elpi.tests.test_HOAS.87 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.87 + elpi.tests.test_HOAS.86 + SORTS: + + WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} |= + elpi.tests.test_HOAS.86 < elpi.tests.test_HOAS.87 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.87 + elpi.tests.test_HOAS.86 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + Body = sort (typ «elpi.tests.test_HOAS.86») + LX = «elpi.tests.test_HOAS.86» + LY = «elpi.tests.test_HOAS.87» + Type = sort (typ «elpi.tests.test_HOAS.87») + UX = «elpi.tests.test_HOAS.86» + UY = «elpi.tests.test_HOAS.87» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} |= + elpi.tests.test_HOAS.86 < elpi.tests.test_HOAS.87 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.87 + elpi.tests.test_HOAS.86 +SORTS: + +WEAK CONSTRAINTS: + + +poly@{u u0} : Type@{u0} +(* u u0 |= u < u0 *) + +poly is universe polymorphic +poly is transparent +Expands to: Constant elpi.tests.test_HOAS.poly +poly@{Set +elpi.tests.test_HOAS.88} + : Type@{elpi.tests.test_HOAS.88} +(* {elpi.tests.test_HOAS.88} |= Set < elpi.tests.test_HOAS.88 *) +Box not a defined object. +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 +sort (typ «Set») +Query assignments: + U = «elpi.tests.test_HOAS.89» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.89} |= Set = elpi.tests.test_HOAS.89 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.89} +UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.89 := Set +SORTS: + +WEAK CONSTRAINTS: + + +Inductive tree@{u} (A : Type@{u}) : Type@{max(Set,u)} := + leaf : A -> tree@{u} A | node : A -> list (tree@{u} A) -> tree@{u} A. +(* u |= u <= list.u0 *) + +Arguments tree A%type_scope +Arguments leaf A%type_scope _ +Arguments node A%type_scope _ _%list_scope +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)), + constructor node + (arity + (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.103 elpi.tests.test_HOAS.102 + elpi.tests.test_HOAS.101 elpi.tests.test_HOAS.100 + elpi.tests.test_HOAS.99 elpi.tests.test_HOAS.98} |= + elpi.tests.test_HOAS.98 < elpi.tests.test_HOAS.100 + elpi.tests.test_HOAS.99 < elpi.tests.test_HOAS.101 + Set <= elpi.tests.test_HOAS.99 + Set <= elpi.tests.test_HOAS.103 + elpi.tests.test_HOAS.98 <= list.u0 + elpi.tests.test_HOAS.98 <= elpi.tests.test_HOAS.99 + elpi.tests.test_HOAS.98 <= elpi.tests.test_HOAS.102 + elpi.tests.test_HOAS.98 <= elpi.tests.test_HOAS.103 + elpi.tests.test_HOAS.99 <= list.u0 + elpi.tests.test_HOAS.99 <= elpi.tests.test_HOAS.102 + elpi.tests.test_HOAS.99 <= elpi.tests.test_HOAS.103 + elpi.tests.test_HOAS.102 <= elpi.tests.test_HOAS.99 + elpi.tests.test_HOAS.103 <= elpi.tests.test_HOAS.99 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.98} + UNDEFINED UNIVERSES: + elpi.tests.test_HOAS.98 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + D = parameter A explicit (sort (typ «M.tree.u0»)) c0 \ + inductive tree tt (arity (sort (typ «M.tree.u1»))) c1 \ + [constructor leaf (arity (prod `_` c0 c2 \ c1)), + constructor node + (arity + (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] + I = «tree» + _uvk_66_ = X0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.103 elpi.tests.test_HOAS.102 elpi.tests.test_HOAS.101 + elpi.tests.test_HOAS.100} |= + M.tree.u0 < elpi.tests.test_HOAS.100 + M.tree.u1 < elpi.tests.test_HOAS.101 + Set <= M.tree.u1 + Set <= elpi.tests.test_HOAS.103 + M.tree.u0 <= elpi.tests.test_HOAS.102 + M.tree.u0 <= elpi.tests.test_HOAS.103 + M.tree.u1 <= elpi.tests.test_HOAS.102 + M.tree.u1 <= elpi.tests.test_HOAS.103 + elpi.tests.test_HOAS.102 <= M.tree.u1 + elpi.tests.test_HOAS.103 <= M.tree.u1 +ALGEBRAIC UNIVERSES: + {M.tree.u0} +UNDEFINED UNIVERSES: + M.tree.u0 +SORTS: + +WEAK CONSTRAINTS: + + +File "./tests/test_API2.v", line 126, characters 0-16: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] +File "./tests/test_API2.v", line 134, characters 0-14: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] +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 +Skipping derivation param2 on indt «nat» since the user did not select it +Skipping derivation tag on indt «nat» since the user did not select it +Skipping derivation eqType_ast on indt «nat» +since the user did not select it +Skipping derivation projK on indt «nat» since it has been already run +Skipping derivation isK on indt «nat» since it has been already run +Skipping derivation eq on indt «nat» since it has been already run +Skipping derivation invert on indt «nat» since the user did not select it +Skipping derivation lens_laws on indt «nat» +since the user did not select it +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 the user did not select it +Skipping derivation bcongr on indt «nat» since it has been already run +Skipping derivation idx2inv on indt «nat» since the user did not select it +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 the user did not select it +Skipping derivation eqK on indt «nat» since it has been already run +Skipping derivation eqbcorrect on indt «nat» +since the user did not select it +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 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 @@ -11523,118 +11591,6 @@ eq_axiom_E3 : eq_axiom_at enum enum_eq E3 : eq_axiom_at enum enum_eq E3 COQC tests/test_eqcorrect.v -Query assignments: - C1 = «Nat.add» - C2 = «times» - X1 = tt - X2 = ff -Query assignments: - C1 = «x» -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx» -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx2» -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: - C1 = «x» - M = «elpi.tests.test_API2.xx3» -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 -Skipping derivation param2 on indt «nat» since the user did not select it -Skipping derivation tag on indt «nat» since the user did not select it -Skipping derivation eqType_ast on indt «nat» -since the user did not select it -Skipping derivation projK on indt «nat» since it has been already run -Skipping derivation isK on indt «nat» since it has been already run -Skipping derivation eq on indt «nat» since it has been already run -Skipping derivation invert on indt «nat» since the user did not select it -Skipping derivation lens_laws on indt «nat» -since the user did not select it -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 the user did not select it -Skipping derivation bcongr on indt «nat» since it has been already run -Skipping derivation idx2inv on indt «nat» since the user did not select it -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 the user did not select it -Skipping derivation eqK on indt «nat» since it has been already run -Skipping derivation eqbcorrect on indt «nat» -since the user did not select it -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 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 @@ -11724,6 +11680,11 @@ : 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 +Query assignments: + C1 = «Nat.add» + C2 = «times» + X1 = tt + X2 = ff 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 @@ -11748,6 +11709,8 @@ XXX.rtree_eqb : (forall A : Type, (A -> A -> bool) -> rtree A -> rtree A -> bool) : forall A : Type, (A -> A -> bool) -> rtree A -> rtree A -> bool +Query assignments: + C1 = «x» derive.param1_trivial: wrong shape is_triv . It does not look like a unary parametricity translation of an inductive with no indexes. triv.induction @@ -11761,35 +11724,81 @@ (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_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.4344 <= Set +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx» +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 +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) + : forall T : RoseTree, Pred T -> Pred.Predinv T +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx2» [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, @@ -12190,24 +12199,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] -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: - - -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) - : forall T : RoseTree, Pred T -> Pred.Predinv T wimpls.wimpls : forall {A : Type}, rtree A -> Type wimpls.wimpls is not universe polymorphic @@ -12225,8 +12216,8 @@ where ?rtree0 : [ |- rtree nat] Query assignments: - GR = const const EXN PRINTING: Not_found - T = «elpi.tests.test_API2.T» + C1 = «x» + M = «elpi.tests.test_API2.xx3» is_empty_trivial : trivial empty is_empty : trivial empty is_empty is_unit_trivial : trivial unit is_unit @@ -12385,56 +12376,52 @@ : full val is_val COQC tests/test_eqOK.v COQC tests/test_eqbcorrect.v -«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) + _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: + -«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) +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) 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 -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» + _uvk_19_ = «elpi.tests.test_API2.7» 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} + {elpi.tests.test_API2.7} UNDEFINED UNIVERSES: - elpi.tests.test_API2.9 - elpi.tests.test_API2.8 + elpi.tests.test_API2.7 SORTS: WEAK CONSTRAINTS: +Query assignments: + GR = const const EXN PRINTING: Not_found + T = «elpi.tests.test_API2.T» +Finished transaction in 11.268 secs (11.224u,0.012s) (successful) empty_eq_OK : ok empty empty_eq : ok empty empty_eq unit_eq_OK : ok unit unit_eq @@ -12495,9 +12482,85 @@ ok A f -> ok (pr_record A) (pr_record_eq A f) enum_eq_OK : ok enum enum_eq : ok enum enum_eq +Finished transaction in 0.193 secs (0.193u,0.s) (successful) +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) +«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 +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) + : forall n : peano, peano_eqb n n = true +ord_eqb_correct : (forall n : peano, eqb_correct (ord_eqb n n)) + : forall n : peano, eqb_correct (ord_eqb n n) +ord_eqb_refl : (forall n : peano, eqb_reflexive (ord_eqb n n)) + : forall n : peano, eqb_reflexive (ord_eqb n n) +ord2_eqb_correct : (forall n : peano, eqb_correct (ord2_eqb n n)) + : forall n : peano, eqb_correct (ord2_eqb n n) +ord2_eqb_refl : (forall n : peano, eqb_reflexive (ord2_eqb n n)) + : forall n : peano, eqb_reflexive (ord2_eqb n n) +val_eqb_correct : eqb_correct val_eqb + : eqb_correct val_eqb +val_eqb_refl : eqb_reflexive val_eqb + : eqb_reflexive val_eqb +alias_eqb_correct : eqb_correct alias_eqb + : eqb_correct alias_eqb +alias_eqb_refl : eqb_reflexive alias_eqb + : eqb_reflexive alias_eqb +COQC tests/test_eqbOK.v +«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 +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] -Finished transaction in 62.682 secs (35.462u,0.164s) (successful) Query assignments: _uvk_20_ = X0 _uvk_21_ = X0 @@ -12593,35 +12656,6 @@ COQC tests/test_require_bad_order.v -Finished transaction in 0.666 secs (0.584u,0.003s) (successful) -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) -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) - : forall n : peano, peano_eqb n n = true -ord_eqb_correct : (forall n : peano, eqb_correct (ord_eqb n n)) - : forall n : peano, eqb_correct (ord_eqb n n) -ord_eqb_refl : (forall n : peano, eqb_reflexive (ord_eqb n n)) - : forall n : peano, eqb_reflexive (ord_eqb n n) -ord2_eqb_correct : (forall n : peano, eqb_correct (ord2_eqb n n)) - : forall n : peano, eqb_correct (ord2_eqb n n) -ord2_eqb_refl : (forall n : peano, eqb_reflexive (ord2_eqb n n)) - : forall n : peano, eqb_reflexive (ord2_eqb n n) -val_eqb_correct : eqb_correct val_eqb - : eqb_correct val_eqb -val_eqb_refl : eqb_reflexive val_eqb - : eqb_reflexive val_eqb -alias_eqb_correct : eqb_correct alias_eqb - : eqb_correct alias_eqb -alias_eqb_refl : eqb_reflexive alias_eqb - : eqb_reflexive alias_eqb -COQC tests/test_eqbOK.v peano_eqb_OK : forall n m : peano, Bool.reflect (n = m) (peano_eqb n m) : forall n m : peano, Bool.reflect (n = m) (peano_eqb n m) seq_eqb_OK @@ -12646,6 +12680,8 @@ Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory COQDEP VFILES +test coqdoc hyperlinks +test link order COQC tests/test_assumption.v COQC tests/test_constructor.v COQC tests/test_intro.v @@ -12657,12 +12693,12 @@ COQC tests/test_generalize.v COQC tests/test_cycle.v COQC examples/usage_eltac.v -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 +d + : nat 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 @@ -12680,12 +12716,12 @@ : nat = 1 : nat -Foo.x = 3 - : nat This.Is.A.Long.Namespace.stuff = 2 : nat = 1 : nat +Foo.x = 3 + : nat This_aux_1.This.Is.A.Long.Namespace.stuff This.Is.A.Long.Namespace.more_stuff This.Is.A.Long.Namespace.stuff @@ -12822,7 +12858,7 @@ create-stamp debian/debhelper-build-stamp dh_prep dh_auto_install --destdir=debian/libcoq-elpi/ - make -j20 install DESTDIR=/build/reproducible-path/coq-elpi-1.19.3/debian/libcoq-elpi AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" + make -j42 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 ############################ @@ -13097,12 +13133,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/3315343/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3315343/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/2040777 and its subdirectories -I: Current time: Fri May 10 07:14:18 -12 2024 -I: pbuilder-time-stamp: 1715368458 +I: removing directory /srv/workspace/pbuilder/3315343 and its subdirectories +I: Current time: Fri Jun 13 15:39:45 +14 2025 +I: pbuilder-time-stamp: 1749778785