Diff of the two buildlogs: -- --- b1/build.log 2024-10-24 10:47:41.180525460 +0000 +++ b2/build.log 2024-10-24 10:52:11.902904581 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Nov 26 05:03:22 -12 2025 -I: pbuilder-time-stamp: 1764176602 +I: Current time: Fri Oct 25 00:47:43 +14 2024 +I: pbuilder-time-stamp: 1729766863 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/3673619/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3256756/tmp/hooks/D01_modify_environment starting +debug: Running on ionos11-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 Oct 24 10:47 /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/3256756/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3256756/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=42 ' - 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]="32" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.32(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=20 ' + 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='16e26211cbad4e1eaff19c84abef0fdf' - 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='3673619' - PS1='# ' - PS2='> ' + INVOCATION_ID=638037f5d13442aea0de42b06b98103e + 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=3256756 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.koTDuk3H/pbuilderrc_zuVl --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.koTDuk3H/b1 --logfile b1/build.log coq-elpi_2.1.0-1.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://213.165.73.152: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.koTDuk3H/pbuilderrc_0DZG --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.koTDuk3H/b2 --logfile b2/build.log coq-elpi_2.1.0-1.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos5-amd64 6.10.11+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.10.11-1~bpo12+1 (2024-10-03) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-26-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3673619/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 4 21:30 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3256756/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -207,7 +239,7 @@ Get: 84 http://deb.debian.org/debian trixie/main amd64 libppx-deriving-ocaml-dev amd64 6.0.3-1 [1066 kB] Get: 85 http://deb.debian.org/debian trixie/main amd64 libre-ocaml-dev amd64 1.12.0+really1.11.0-1 [1290 kB] Get: 86 http://deb.debian.org/debian trixie/main amd64 libelpi-ocaml-dev amd64 1.18.2-5+b5 [13.3 MB] -Fetched 366 MB in 17s (21.7 MB/s) +Fetched 366 MB in 6s (62.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-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 ... 21880 files and directories currently installed.) @@ -502,8 +534,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Wed Nov 26 17:05:15 UTC 2025. -Universal Time is now: Wed Nov 26 17:05:15 UTC 2025. +Local time is now: Thu Oct 24 10:48:38 UTC 2024. +Universal Time is now: Thu Oct 24 10:48:38 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -580,7 +612,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/coq-elpi-2.1.0/ && 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_2.1.0-1_source.changes +I: user script /srv/workspace/pbuilder/3256756/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/3256756/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/coq-elpi-2.1.0/ && 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_2.1.0-1_source.changes dpkg-buildpackage: info: source package coq-elpi dpkg-buildpackage: info: source version 2.1.0-1 dpkg-buildpackage: info: source distribution unstable @@ -930,7 +966,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.013 secs (0.012u,0.s) (successful) +Finished transaction in 0.01 secs (0.01u,0.s) (successful) ########################## building APPS ############################ make[3]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/derive' Using coq found in /usr/bin//, from COQBIN or PATH @@ -1104,7 +1140,7 @@ make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0' make[1]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0' dh_auto_test - make -j42 test + make -j20 test make[1]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0' Using coq found in /usr/bin, from COQBIN or PATH ########################## building plugin ########################## @@ -1120,7 +1156,6 @@ make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/eltac' Using coq found in /usr/bin//, from COQBIN or PATH COQC tests/test_API.v -make[4]: Nothing to be done for 'real-all'. COQC tests/test_API_elaborate.v COQC tests/test_API_typecheck.v COQC tests/test_API_env.v @@ -1134,109 +1169,16 @@ COQC tests/test_quotation.v COQC tests/test_vernacular1.v COQC tests/test_tactic.v -COQC tests/test_elaborator.v COQC tests/test_ltac.v +COQC tests/test_elaborator.v +COQC tests/test_ltac3.v COQC tests/test_cache_async.v COQC tests/test_COQ_ELPI_ATTRIBUTES.v -COQC tests/test_ltac3.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 -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/eltac' -COQC tests/test_link_order6.v -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' -Using coq found in /usr/bin//, from COQBIN or PATH -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 -COQC tests/test_query_extra_dep.v -COQC tests/test_toposort.v -COQC tests/test_synterp.v -COQC tests/test_checker.v -COQC tests/test_replay.v +make[4]: Nothing to be done for 'real-all'. ?r : Reflexive R : Reflexive R where ?r : [ |- Reflexive R] -make[4]: Nothing to be done for 'real-all'. -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/locker' -Using coq found in /usr/bin//, from COQBIN or PATH -COQC tests/test_libobject_B.v -COQC tests/test_link_order_import1.v -COQC tests/test_link_order_import2.v -test2 -test1 -str hello -test1 -too many arguments -test1 -str hello my -str Dear -test1 -too many arguments -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'. -Query assignments: - GR = const «myi» -myi : Reflexive R - : Reflexive R -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/locker' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/coercion' -Using coq found in /usr/bin//, from COQBIN or PATH -Query assignments: - E = fun `n` (global (indt «nat»)) c0 \ - fun `t` (app [global (const «T2»), c0]) c1 \ - fun `x` - (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 `x` - (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} -FLEXIBLE 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»), @@ -1284,19 +1226,21 @@ gref (const «CompSpec2Type»), gref (const «ID»), gref (const «id»), gref (const «IDProp»), gref (const «idProp»)] MP = «Coq.Init.Datatypes» -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») +COQC tests/perf_calls.v +test2 +test1 +str hello +test1 +too many arguments +test1 +str hello my +str Dear +test1 +too many arguments +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/eltac' +COQC tests/test_ctx_cache.v +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' +Using coq found in /usr/bin//, from COQBIN or PATH «elpi.tests.test_API_notations.abbr» Query assignments: A = «elpi.tests.test_API_notations.abbr» @@ -1334,6 +1278,150 @@ Expands to: Notation elpi.tests.test_API_notations.abbr 4 = 4 : Prop +elpi.tests.test_API_module.X.i +[elpi, tests, test_API_module, X, Y] +[elpi, tests, test_API_module, X, Y] +Query assignments: + L = [gref (indt «X.i»), gref (const «X.i_rect»), gref (const «X.i_ind»), + gref (const «X.i_rec»), gref (const «X.i_sind»), gref (const «X.d»), + submodule «elpi.tests.test_API_module.X.Y» + [gref (indt «X.Y.i»), gref (const «X.Y.i_rect»), + gref (const «X.Y.i_ind»), gref (const «X.Y.i_rec»), + gref (const «X.Y.i_sind»), gref (const «X.Y.d»)]] + MP = «elpi.tests.test_API_module.X» + Spilled_1 = [elpi, tests, test_API_module, X, Y] + Spilled_2 = [elpi, tests, test_API_module, X, Y] + Spilled_3 = elpi.tests.test_API_module.X.Y.i + Spilled_4 = elpi.tests.test_API_module.X.i + Spilled_5 = elpi.tests.test_API_module.X.i + XYi = «X.Y.i» + XYr = «X.Y.i_rect» + Xi = «X.i» +Query assignments: + 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: + _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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α4 + α5 + α6 +WEAK CONSTRAINTS: + + +Notation abbr2 _elpi_ctx_entry_1_was_x_ := + (fun H => _elpi_ctx_entry_1_was_x_ = _elpi_ctx_entry_1_was_x_) +Expands to: Notation elpi.tests.test_API_notations.abbr2 +(fun _ : nat => 2 = 2) 3 + : Prop +Query assignments: + GR = const «myi» +myi : Reflexive R + : Reflexive R +File "./tests/test_tactic.v", line 5, characters 3-155: +Warning: Type is linear: name it _Type (discard) or Type_ (fresh variable) +[elpi.typecheck,elpi,default] +Query assignments: + I = «Y.i» + ID = j + J = «Y.j» + MP = «elpi.tests.test_API_module.Y» + P = [elpi, tests, test_API_module, Y] +Query assignments: + E = fun `n` (global (indt «nat»)) c0 \ + fun `t` (app [global (const «T2»), c0]) c1 \ + fun `x` + (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 `x` + (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} +FLEXIBLE UNIVERSES: + elpi.tests.test_API_elaborate.10 +SORTS: + α4 := Type + α5 := Type +WEAK CONSTRAINTS: + + +COQC tests/test_libobject_A.v +nabla c1 \ + seal + (goal [decl c1 `P` (sort prop)] (app [global (const «id»), X0, X1]) + (prod `_` c1 c2 \ c1) + (app [global (const «id»), prod `_` c1 c2 \ c1, X2 c1]) []) + {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 */ Query assignments: I = const «imp» X2.imp : forall (T : Type) (x : T), x = x -> Prop @@ -1341,9 +1429,184 @@ X2.imp is not universe polymorphic Arguments X2.imp T%type_scope x _ Expands to: Constant elpi.tests.test_API_arguments.X2.imp -File "./tests/test_tactic.v", line 5, characters 3-155: -Warning: Type is linear: name it _Type (discard) or Type_ (fresh variable) -[elpi.typecheck,elpi,default] +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: + CA = «a» + CB = «b» + CC = «c» +d : nat + +d is not universe polymorphic +Expands to: Variable d +Query assignments: + Mp_ta = «elpi.tests.test_API_module.TA» +eq_refl : e2 = 3 + : e2 = 3 +make[4]: Nothing to be done for 'real-all'. +fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] +Query assignments: + Spilled_1 = «elpi.tests.test_API_notations.abbr2» + T = fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] + _uvk_31_ = X2 +z + : nat +c2 +global (indt «nat») +z +nat +Query assignments: + Spilled_1 = c0 \ c1 \ c2 \ +nat + Spilled_2 = c0 \ c1 \ c2 \ +z + T = global (indt «nat») +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/locker' +Using coq found in /usr/bin//, from COQBIN or PATH +Query assignments: + GRy = EXN PRINTING: Not_found + I = EXN PRINTING: Not_found + L = [gref (const «A.z»), gref (const «A.i»)] + MP = «elpi.tests.test_API_module.A» + MP_TA = «elpi.tests.test_API_module.TA» + _uvk_1_ = «A.i.u0» + _uvk_2_ = «elpi.tests.test_API_module.11» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API_module.11 A.i.u0} +FLEXIBLE UNIVERSES: + elpi.tests.test_API_module.11 + A.i.u0 +SORTS: + +WEAK CONSTRAINTS: + + +Module +A + : TA +:= Struct + Definition x + Module B + Definition z + Inductive i1 + Definition i1_rect + Definition i1_ind + Definition i1_rec + Definition i1_sind + Definition i + End + +A.z + : nat +A.i + : Type +*** [ A.i : Type ] +Query assignments: + B = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + 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» + RB = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]] + T = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») + TY = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») +Syntactic constraints: + {c0 c1 c2 c3} : + decl c3 `n` (global (indt «nat»)), decl c2 `m` (global (indt «nat»)), + decl c1 `n` (global (indt «nat»)), + decl c0 `add` + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) + ?- evar (X0 c0 c1 c2 c3) (sort (typ «elpi.tests.test_elaborator.17»)) + (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.23 elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.21 elpi.tests.test_elaborator.20 + elpi.tests.test_elaborator.19 elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.17 elpi.tests.test_elaborator.16 + elpi.tests.test_elaborator.15 elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.13 elpi.tests.test_elaborator.12 + elpi.tests.test_elaborator.11 elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.9 elpi.tests.test_elaborator.8 + elpi.tests.test_elaborator.7 elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.5 elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.3 elpi.tests.test_elaborator.2 + elpi.tests.test_elaborator.1} |= + Set <= elpi.tests.test_elaborator.1 + Set <= elpi.tests.test_elaborator.2 + Set <= elpi.tests.test_elaborator.3 + Set <= elpi.tests.test_elaborator.8 + Set <= elpi.tests.test_elaborator.12 + Set <= elpi.tests.test_elaborator.16 + Set <= elpi.tests.test_elaborator.20 + elpi.tests.test_elaborator.1 <= elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.2 <= elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.3 <= elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.4 <= elpi.tests.test_elaborator.5 + elpi.tests.test_elaborator.5 <= elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.6 <= elpi.tests.test_elaborator.7 + elpi.tests.test_elaborator.8 <= elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.9 <= elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.10 <= elpi.tests.test_elaborator.11 + elpi.tests.test_elaborator.12 <= elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.13 <= elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.14 <= elpi.tests.test_elaborator.15 + elpi.tests.test_elaborator.16 <= elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.17 <= elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.18 <= elpi.tests.test_elaborator.19 + elpi.tests.test_elaborator.20 <= elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.21 <= elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.22 <= elpi.tests.test_elaborator.23 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + Spilled_1 = «elpi.tests.test_API_notations.abbr2» +COQC tests/test_glob.v +Query assignments: + A = «elpi.tests.test_API_module.a» + MP_TA = «elpi.tests.test_API_module.TA» + TF = «elpi.tests.test_API_module.TF» +COQC tests/test_link_perf.v File "./tests/test_API_TC_CS.v", line 24, characters 0-30: Warning: There is an hint extern in the typeclass db: @@ -1462,131 +1725,6 @@ tc-instance (const «eq_Symmetric») (tc-priority-computed 0), tc-instance (const «Equivalence_Symmetric») (tc-priority-computed 1), tc-instance (const «PER_Symmetric») (tc-priority-given 3)] -nabla c1 \ - seal - (goal [decl c1 `P` (sort prop)] (app [global (const «id»), X0, X1]) - (prod `_` c1 c2 \ c1) - (app [global (const «id»), prod `_` c1 c2 \ c1, X2 c1]) []) -make[4]: Nothing to be done for 'real-all'. -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: - X = «x» -fx : nat -> nat - : nat -> nat - {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 */ -Query assignments: - B = fix `add` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - 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» - RB = fix `add` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]] - T = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») - TY = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -Syntactic constraints: - {c0 c1 c2 c3} : - decl c3 `n` (global (indt «nat»)), decl c2 `m` (global (indt «nat»)), - decl c1 `n` (global (indt «nat»)), - decl c0 `add` - (prod `n` (global (indt «nat»)) c1 \ - prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) - ?- evar (X0 c0 c1 c2 c3) (sort (typ «elpi.tests.test_elaborator.17»)) - (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.23 elpi.tests.test_elaborator.22 - elpi.tests.test_elaborator.21 elpi.tests.test_elaborator.20 - elpi.tests.test_elaborator.19 elpi.tests.test_elaborator.18 - elpi.tests.test_elaborator.17 elpi.tests.test_elaborator.16 - elpi.tests.test_elaborator.15 elpi.tests.test_elaborator.14 - elpi.tests.test_elaborator.13 elpi.tests.test_elaborator.12 - elpi.tests.test_elaborator.11 elpi.tests.test_elaborator.10 - elpi.tests.test_elaborator.9 elpi.tests.test_elaborator.8 - elpi.tests.test_elaborator.7 elpi.tests.test_elaborator.6 - elpi.tests.test_elaborator.5 elpi.tests.test_elaborator.4 - elpi.tests.test_elaborator.3 elpi.tests.test_elaborator.2 - elpi.tests.test_elaborator.1} |= - Set <= elpi.tests.test_elaborator.1 - Set <= elpi.tests.test_elaborator.2 - Set <= elpi.tests.test_elaborator.3 - Set <= elpi.tests.test_elaborator.8 - Set <= elpi.tests.test_elaborator.12 - Set <= elpi.tests.test_elaborator.16 - Set <= elpi.tests.test_elaborator.20 - elpi.tests.test_elaborator.1 <= elpi.tests.test_elaborator.6 - elpi.tests.test_elaborator.2 <= elpi.tests.test_elaborator.4 - elpi.tests.test_elaborator.3 <= elpi.tests.test_elaborator.4 - elpi.tests.test_elaborator.4 <= elpi.tests.test_elaborator.5 - elpi.tests.test_elaborator.5 <= elpi.tests.test_elaborator.6 - elpi.tests.test_elaborator.6 <= elpi.tests.test_elaborator.7 - elpi.tests.test_elaborator.8 <= elpi.tests.test_elaborator.10 - elpi.tests.test_elaborator.9 <= elpi.tests.test_elaborator.10 - elpi.tests.test_elaborator.10 <= elpi.tests.test_elaborator.11 - elpi.tests.test_elaborator.12 <= elpi.tests.test_elaborator.14 - elpi.tests.test_elaborator.13 <= elpi.tests.test_elaborator.14 - elpi.tests.test_elaborator.14 <= elpi.tests.test_elaborator.15 - elpi.tests.test_elaborator.16 <= elpi.tests.test_elaborator.18 - elpi.tests.test_elaborator.17 <= elpi.tests.test_elaborator.18 - elpi.tests.test_elaborator.18 <= elpi.tests.test_elaborator.19 - elpi.tests.test_elaborator.20 <= elpi.tests.test_elaborator.22 - elpi.tests.test_elaborator.21 <= elpi.tests.test_elaborator.22 - elpi.tests.test_elaborator.22 <= elpi.tests.test_elaborator.23 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -z - : nat Query assignments: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -1604,58 +1742,17 @@ 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-2.1.0/apps/coercion' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/cs' -Using coq found in /usr/bin//, from COQBIN or PATH -elpi.tests.test_API_module.X.i -[elpi, tests, test_API_module, X, Y] -[elpi, tests, test_API_module, X, Y] -Query assignments: - L = [gref (indt «X.i»), gref (const «X.i_rect»), gref (const «X.i_ind»), - gref (const «X.i_rec»), gref (const «X.i_sind»), gref (const «X.d»), - submodule «elpi.tests.test_API_module.X.Y» - [gref (indt «X.Y.i»), gref (const «X.Y.i_rect»), - gref (const «X.Y.i_ind»), gref (const «X.Y.i_rec»), - gref (const «X.Y.i_sind»), gref (const «X.Y.d»)]] - MP = «elpi.tests.test_API_module.X» - Spilled_1 = [elpi, tests, test_API_module, X, Y] - Spilled_2 = [elpi, tests, test_API_module, X, Y] - Spilled_3 = elpi.tests.test_API_module.X.Y.i - Spilled_4 = elpi.tests.test_API_module.X.i - Spilled_5 = elpi.tests.test_API_module.X.i - XYi = «X.Y.i» - XYr = «X.Y.i_rect» - Xi = «X.i» -Query assignments: - 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») -COQC tests/test_link_order_import3.v -File "./tests/test_API_TC_CS.v", line 25, characters 0-70: -Warning: -There is an hint extern in the typeclass db: -(*external*) (equiv_rewrite_relation R) -[TC.hints,elpi,default] +COQC tests/test_link_order1.v Query assignments: - GR = indt «RewriteRelation» - L = [tc-instance (const «relation_equivalence_rewrite_relation») - (tc-priority-computed 0), - tc-instance (const «iff_rewrite_relation») (tc-priority-given 2), - tc-instance (const «impl_rewrite_relation») (tc-priority-given 3), - tc-instance (const «inverse_impl_rewrite_relation») (tc-priority-given 3)] -synterp [str X] -interp [str X] -synterp [int 1] -interp [int 1] + 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 {c0 c1 c2 c3} : decl c3 `w` c0, decl c2 `h` @@ -1686,8 +1783,6 @@ w : T ====================== (x w = Type -> x w -> exists a : x w, a = a) -synterp [trm _] -interp [trm (app [global (indc «S»), global (indc «O»)])] {c0 c1 c2 c3} : decl c3 `w` c0, decl c2 `h` @@ -1718,17 +1813,6 @@ w : T ====================== (x w = Type -> x w -> exists a : x w, a = a) -synterp -[const-decl x (some _) - (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] -interp -[const-decl x - (some - (fun `P` (global (indt «bool»)) c0 \ - fun `Q` (global (indt «bool»)) c1 \ global (indc «O»))) - (parameter P explicit (global (indt «bool»)) c0 \ - parameter Q explicit (global (indt «bool»)) c1 \ - arity (global (indt «nat»)))] {c0 c1 c2 c3 c4 c5} : decl c5 `j` (app [c1, c3]), decl c4 `e` @@ -1773,9 +1857,12 @@ j : x w ====================== (?foo = ?foo) -synterp -[const-decl x none - (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] +Coq version: 8.19.1 = 8 . 19 . 1 +Query assignments: + MA = 8 + MI = 19 + P = 1 + V = 8.19.1 {c0 c1 c2 c3 c4 c5} : decl c5 `j` (app [c1, c3]), decl c4 `e` @@ -1820,299 +1907,6 @@ j : x w ====================== (?foo = ?foo) -interp -[const-decl x none - (parameter P explicit (global (indt «bool»)) c0 \ - parameter Q explicit (global (indt «bool»)) c1 \ - arity (global (indt «nat»)))] -Coq version: 8.19.1 = 8 . 19 . 1 -Query assignments: - MA = 8 - MI = 19 - P = 1 - V = 8.19.1 -synterp -[indt-decl - (parameter P explicit _ c0 \ - parameter Q explicit _ c1 \ - record x _ K - (field [coercion off, canonical tt] f1 _ c2 \ - field [coercion off, canonical tt] f2 _ c3 \ end-record))] -d1 - : nat -d2 - : nat -i1 - : Prop -i2 - : Prop -k1 - : i1 -k2 - : i2 -r1 - : Set -r2 - : Type -f1 - : r1 -> nat -f2 - : r2 -> nat -interp -[indt-decl - (parameter P explicit (global (indt «bool»)) c0 \ - parameter Q explicit (global (indt «bool»)) c1 \ - record x (sort (typ «Set»)) K - (field [coercion off, canonical tt] f1 (global (indt «nat»)) c2 \ - field [coercion off, canonical tt] f2 - (app [global (indt «eq»), global (indt «nat»), c2, c2]) c3 \ - end-record))] -synterp -[indt-decl - (parameter P explicit _ c0 \ - inductive x tt (parameter Q explicit _ c1 \ arity _) c1 \ - [constructor K (parameter Q explicit _ c2 \ arity _), - constructor R (parameter Q explicit _ c2 \ arity _)])] -interp -[indt-decl - (parameter P explicit (global (indt «bool»)) c0 \ - inductive x tt - (parameter Q explicit (global (indt «bool»)) c1 \ - arity (prod `_` (global (indt «nat»)) c2 \ sort (typ «Set»))) c1 \ - [constructor K - (parameter Q explicit (global (indt «bool»)) c2 \ - arity - (prod `_` (global (indt «nat»)) c3 \ - app - [c1, c2, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]])), - constructor R - (parameter Q explicit (global (indt «bool»)) c2 \ - arity - (prod `w` (global (indt «bool»)) c3 \ - app [c1, c2, app [global (indc «S»), global (indc «O»)]]))])] -synterp -[ctx-decl - (context-item A explicit _ none c0 \ - context-item B explicit _ none c1 \ context-end)] -interp -[ctx-decl - (context-item A explicit (global (indt «nat»)) none c0 \ - context-item B explicit (global (indt «bool»)) none c1 \ context-end)] -synterp [str X] -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]] -interp [str X] -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: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_quotation.3 -SORTS: - α1 - α2 -WEAK CONSTRAINTS: - - -synterp [int 1] -interp [int 1] -synterp [trm _] -interp [trm (app [global (indc «S»), global (indc «O»)])] -synterp -[const-decl x (some _) - (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] -Query assignments: - P = /build/reproducible-path/coq-elpi-2.1.0/elpi/elpi_elaborator.elpi -interp -[const-decl x - (some - (fun `P` (global (indt «bool»)) c0 \ - fun `Q` (global (indt «bool»)) c1 \ global (indc «O»))) - (parameter P explicit (global (indt «bool»)) c0 \ - parameter Q explicit (global (indt «bool»)) c1 \ - arity (global (indt «nat»)))] -synterp -[const-decl x none - (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] -interp -[const-decl x none - (parameter P explicit (global (indt «bool»)) c0 \ - parameter Q explicit (global (indt «bool»)) c1 \ - arity (global (indt «nat»)))] -synterp -[indt-decl - (parameter P explicit _ c0 \ - parameter Q explicit _ c1 \ - record x _ K - (field [coercion off, canonical tt] f1 _ c2 \ - field [coercion off, canonical tt] f2 _ c3 \ end-record))] -interp -[indt-decl - (parameter P explicit (global (indt «bool»)) c0 \ - parameter Q explicit (global (indt «bool»)) c1 \ - record x (sort (typ «Set»)) K - (field [coercion off, canonical tt] f1 (global (indt «nat»)) c2 \ - field [coercion off, canonical tt] f2 - (app [global (indt «eq»), global (indt «nat»), c2, c2]) c3 \ - end-record))] -synterp -[indt-decl - (parameter P explicit _ c0 \ - inductive x tt (parameter Q explicit _ c1 \ arity _) c1 \ - [constructor K (parameter Q explicit _ c2 \ arity _), - constructor R (parameter Q explicit _ c2 \ arity _)])] -interp -[indt-decl - (parameter P explicit (global (indt «bool»)) c0 \ - inductive x tt - (parameter Q explicit (global (indt «bool»)) c1 \ - arity (prod `_` (global (indt «nat»)) c2 \ sort (typ «Set»))) c1 \ - [constructor K - (parameter Q explicit (global (indt «bool»)) c2 \ - arity - (prod `_` (global (indt «nat»)) c3 \ - app - [c1, c2, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]])), - constructor R - (parameter Q explicit (global (indt «bool»)) c2 \ - arity - (prod `w` (global (indt «bool»)) c3 \ - app [c1, c2, app [global (indc «S»), global (indc «O»)]]))])] -synterp -[ctx-decl - (context-item A explicit _ none c0 \ - context-item B explicit _ none c1 \ context-end)] -opaque_3 : nat - -opaque_3 is not universe polymorphic -opaque_3 is opaque -Expands to: Constant elpi.tests.test_API_section.opaque_3 -interp -[ctx-decl - (context-item A explicit (global (indt «nat»)) none c0 \ - context-item B explicit (global (indt «bool»)) none c1 \ context-end)] -a : nat - -a is not universe polymorphic -a is transparent -Expands to: Constant elpi.tests.test_synterp.X.a -Module X := Struct Definition a : nat. End - -Module A := Struct Definition a : nat. End - -make[4]: Nothing to be done for 'real-all'. -COQC tests/test_libobject_C.v -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: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α11 := Type -WEAK CONSTRAINTS: - - -H -[nabla c1 \ - seal - (goal - [decl c1 `H` - (prod `b` - (prod `b` (global (indt «bool»)) c2 \ - app [global (indt «eq»), global (indt «bool»), c2, c2]) c2 \ - global (indt «True»))] (X0 c1) - (prod `b` (global (indt «bool»)) c2 \ - app [global (indt «eq»), global (indt «bool»), c2, c2]) (X1 c1) [])] -Query assignments: - _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: - {} -FLEXIBLE 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 ----<<---- enter: coq.say raw: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -2466,6 +2260,17 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +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) [])] ----<<---- enter: coq.say raw: (parameter A1 maximal X0 c0 \ @@ -2580,9 +2385,6 @@ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X9) Illtyped inductive declaration -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/cs' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/tc' -Using coq found in /usr/bin//, from COQBIN or PATH ---->>---- exit: std.assert-ok! (coq.elaborate-indt-decl-skeleton @@ -2836,8 +2638,6 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?n : [ |- nat] -Query assignments: - GR = indt «RewriteRelation» a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 : foo1 ?A2 ?B1 ?B2 3 where @@ -2846,6 +2646,98 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +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 ] +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: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_quotation.3 +SORTS: + α1 + α2 +WEAK CONSTRAINTS: + + +c2 +global (indt «nat») +z +nat +Query assignments: + Spilled_1 = c0 \ c1 \ c2 \ +nat + Spilled_2 = c0 \ c1 \ c2 \ +z + T = global (indt «nat») +Query assignments: + Spilled_1 = const «foo» +foo 3 + : nat +Query assignments: + MP_TA = «elpi.tests.test_API_module.TA» +it = elpi_subproof + : True +it : True + +it is not universe polymorphic +it is transparent +Expands to: Constant elpi.tests.test_ltac.it +elpi_subproof = I + : True +elpi_subproof : True + +elpi_subproof is not universe polymorphic +elpi_subproof is opaque +Expands to: Constant elpi.tests.test_ltac.elpi_subproof +Closed under the global context +COQC tests/test_link_order2.v File "./tests/test_vernacular1.v", line 47, characters 2-11: Warning: This command does not support this attribute: foo. [unsupported-attributes,parsing,default] @@ -2873,194 +2765,27 @@ [get-option elpi.loc File "./tests/test_vernacular1.v", line 53, column 0, character 1035:, get-option elpi.phase interp, get-option foo bar, get-option poly tt] +make[4]: Nothing to be done for 'real-all'. Query assignments: - Spilled_1 = const «foo» -foo 3 - : nat + X = «x» +fx : nat -> nat + : nat -> nat +File "./tests/test_API_TC_CS.v", line 25, characters 0-70: +Warning: +There is an hint extern in the typeclass db: +(*external*) (equiv_rewrite_relation R) +[TC.hints,elpi,default] +Query assignments: + GR = indt «RewriteRelation» + L = [tc-instance (const «relation_equivalence_rewrite_relation») + (tc-priority-computed 0), + tc-instance (const «iff_rewrite_relation») (tc-priority-given 2), + tc-instance (const «impl_rewrite_relation») (tc-priority-given 3), + tc-instance (const «inverse_impl_rewrite_relation») (tc-priority-given 3)] +Module Type TB = Funsig (A:TA) Sig End Query assignments: GR = «empty_nat» TY = global (indt «nat») -global (indc «O») -app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] -[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»)) - [])] -Query assignments: - I = «Y.i» - ID = j - J = «Y.j» - MP = «elpi.tests.test_API_module.Y» - P = [elpi, tests, test_API_module, Y] -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: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_quotation.12 -SORTS: - α3 - α4 := Type - α5 - α6 - α7 - α8 - α9 -WEAK CONSTRAINTS: - - -it = elpi_subproof - : True -it : True - -it is not universe polymorphic -it is transparent -Expands to: Constant elpi.tests.test_ltac.it -elpi_subproof = I - : True -elpi_subproof : True - -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context -c2 -global (indt «nat») -z -nat -Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z - T = global (indt «nat») Query assignments: B = fun `n` (global (indt «nat»)) c0 \ app @@ -3166,130 +2891,37 @@ WEAK CONSTRAINTS: -hello world -COQC tests/test_ltac2.v -a - : nat -L= [p 1] -Query q X0 -Query assignments: - GR = indt «True» -Query assignments: - Mp_ta = «elpi.tests.test_API_module.TA» -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 `a` (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 `a` (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) -Query r X0 -Result r 1 -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 -make[4]: Nothing to be done for 'real-all'. -fun `H` X0 c0 \ - app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] -Query assignments: - Spilled_1 = «elpi.tests.test_API_notations.abbr2» - T = fun `H` X0 c0 \ - app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] - _uvk_31_ = X2 -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/tc' -########################## testing APPS ############################ -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/derive' -Using coq found in /usr/bin//, from COQBIN or PATH -3 Query assignments: - X = 3 -Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory + 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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α11 := Type +WEAK CONSTRAINTS: + -c2 -global (indt «nat») -z -nat +Illegal application (Non-functional construction): +The expression "Prop" of type "Type" +cannot be applied to the term + "Prop" : "Type" Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z - T = global (indt «nat») + E = Illegal application (Non-functional construction): +The expression "Prop" of type "Type" +cannot be applied to the term + "Prop" : "Type" Query assignments: D = parameter A explicit (sort (typ «t.u0»)) c0 \ inductive t tt @@ -3510,6 +3142,8 @@ [global (indt «eq»), global (indt «nat»), app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) «foo» +Query assignments: + A = «elpi.tests.test_API_module.A» ----<<---- enter: coq.say raw: (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ @@ -3710,10 +3344,16 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» -Query assignments: - GR1 = indc «Vector.nil» - GR2 = indt «nat» - GR3 = const «A» +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/locker' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/coercion' +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»)) + [])] +hello world Query assignments: Spilled_1 = const «f» Spilled_2 = const «f» @@ -3729,174 +3369,255 @@ Expands to: Constant elpi.tests.test_API_arguments.f f (S:=bool * bool) : bool * bool -> Prop -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 +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]))] +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»)]] +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 `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] +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: - 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»)] + 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_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_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: {} FLEXIBLE UNIVERSES: - + elpi.tests.test_quotation.12 SORTS: - α19 := Type + α3 + α4 := Type + α5 + α6 + α7 + α8 + α9 WEAK CONSTRAINTS: -Debug: -elpi lets escape exception: The term global (indc X0) cannot be represented in Coq since its gref part is illformed -unknown_gref -COQDEP VFILES -COQC tests/test_link_order9.v +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 `a` (app [global (const «f1»), c0]) c3 \ c2))] +Unable to unify "bool" with "nat". Query assignments: - T = sort (typ «elpi.tests.test_HOAS.3») - U = «elpi.tests.test_HOAS.3» + Msg = Unable to unify "bool" with "nat". +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) Query assignments: - GRy = EXN PRINTING: Not_found - I = EXN PRINTING: Not_found - L = [gref (const «A.z»), gref (const «A.i»)] - MP = «elpi.tests.test_API_module.A» - MP_TA = «elpi.tests.test_API_module.TA» - _uvk_1_ = «A.i.u0» - _uvk_2_ = «elpi.tests.test_API_module.11» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_module.11 A.i.u0} -FLEXIBLE UNIVERSES: - elpi.tests.test_API_module.11 - A.i.u0 -SORTS: - -WEAK CONSTRAINTS: - - -Module -A - : TA -:= Struct - Definition x - Module B - Definition z - Inductive i1 - Definition i1_rect - Definition i1_ind - Definition i1_rec - Definition i1_sind - Definition i - End + Spilled_1 = «elpi.tests.test_API_module.A» +Module IA := Struct Definition z : nat. Definition i : Type. End -A.z - : nat -A.i +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 -*** [ A.i : Type ] -CHR: Uniqueness of typing of frozen--1073 + [] <-> [] -1 |> [decl c0 `x` (uvar frozen--1073 [])] |- frozen--1073 [] : -sort (typ «elpi.tests.test_elaborator.40») -0 |> [] |- frozen--1073 [] : 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: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - Spilled_1 = «elpi.tests.test_API_notations.abbr2» -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 + GR1 = indc «Vector.nil» + GR2 = indt «nat» + GR3 = const «A» +opaque_3 : 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 -Illegal application (Non-functional construction): -The expression "Prop" of type "Type" -cannot be applied to the term - "Prop" : "Type" +opaque_3 is not universe polymorphic +opaque_3 is opaque +Expands to: Constant elpi.tests.test_API_section.opaque_3 Query assignments: - E = Illegal application (Non-functional construction): -The expression "Prop" of type "Type" -cannot be applied to the term - "Prop" : "Type" -fun `x` X0 c0 \ app [X1, c0] + GR = indt «RewriteRelation» Query assignments: - X = X1 - Y = fun `x` X0 c0 \ app [X1, c0] - _uvk_34_ = X0 -«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» - 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 -A + Spilled_1 = «elpi.tests.test_API_module.IA» +make[4]: Nothing to be done for 'real-all'. Query assignments: I = «foo» +Finished transaction in 2.923 secs (2.711u,0.148s) (successful) ----<<---- enter: coq.say raw: (parameter A explicit X0 c0 \ @@ -3986,7 +3707,6 @@ [global (indt «eq»), X5 c0 c1 c2 c3 c4 c5, app [c2, c5, c5], c5]) c4 \ end-record)) X6) Illtyped inductive declaration -Finished transaction in 3.198 secs (1.788u,0.086s) (successful) ---->>---- exit: std.assert-ok! (coq.elaborate-indt-decl-skeleton @@ -4127,6 +3847,50 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» +d1 + : nat +d2 + : nat +i1 + : Prop +i2 + : Prop +k1 + : i1 +k2 + : i2 +r1 + : Set +r2 + : Type +f1 + : r1 -> nat +f2 + : r2 -> 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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α19 := Type +WEAK CONSTRAINTS: + + +Debug: +elpi lets escape exception: The term global (indc X0) cannot be represented in Coq since its gref part is illformed +unknown_gref Query assignments: Spilled_1 = const «f» f : forall [S : Type], S -> Prop @@ -4137,19 +3901,33 @@ The reduction tactics unfold f when applied to 1 argument f is transparent Expands to: Constant elpi.tests.test_API_arguments.f -Query assignments: f (S:=bool * bool) : bool * bool -> Prop +CHR: Uniqueness of typing of frozen--1073 + [] <-> [] +1 |> [decl c0 `x` (uvar frozen--1073 [])] |- frozen--1073 [] : +sort (typ «elpi.tests.test_elaborator.40») = fun x : bool => x = x : bool -> Prop - A = «elpi.tests.test_API_module.a» - MP_TA = «elpi.tests.test_API_module.TA» - TF = «elpi.tests.test_API_module.TF» +0 |> [] |- frozen--1073 [] : 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: - U = «elpi.tests.test_HOAS.4» + 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_HOAS.4} |= + {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: {} FLEXIBLE UNIVERSES: @@ -4159,307 +3937,117 @@ WEAK CONSTRAINTS: +COQC tests/test_link_order3.v +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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α1 := Type + α2 := Type +WEAK CONSTRAINTS: + + +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.IA» +i + : Type +COQC tests/test_link_order4.v +A +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.TA» +Query assignments: + T = sort (typ «elpi.tests.test_HOAS.3») + U = «elpi.tests.test_HOAS.3» +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/coercion' +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») +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/cs' +Using coq found in /usr/bin//, from COQBIN or PATH +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 +«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» +3 +Query assignments: + X = 3 Query assignments: X = 3 app [global (const «Nat.mul»), X0, X1] type -COQC tests/test_readme.v -COQC tests/test_derive_stdlib.v -fun `r` (global (indt «nat»)) c0 \ - fun `p` - (prod `y` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) - c1 \ - fun `q` (global (indt «bool»)) c2 \ - prod `y` (global (indt «nat»)) c3 \ - app - [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -prod `y` (global (indt «nat»)) c3 \ - app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] - X = fun `r` (global (indt «nat»)) c0 \ - fun `p` - (prod `y` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) - c1 \ - fun `q` (global (indt «bool»)) c2 \ - prod `y` (global (indt «nat»)) c3 \ - app - [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] -foo : nat - : nat -bar : bool -> nat - : bool -> nat -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) -COQC tests/test_param2.v -COQC tests/test_invert.v -COQC tests/test_idx2inv.v -COQC examples/usage.v -COQC examples/readme.v + GR = indt «True» Query assignments: - GR = const «myc» -eq_op myc t t - : bool + Spilled_1 = «elpi.tests.test_API_module.TA» +Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End Query assignments: - GR = indc «Ord» - K = global (indc «Ord») - T = fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `u` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c1 c2 c3) c4 \ - fun `Px` (X10 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] - T1 = fun `u` (global (indt «nat»)) c0 \ - app - [global (indc «SubType»), global (indt «nat»), - fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], - app [global (indt «ord»), c0], app [global (const «oval»), c0], - app [global (indc «Ord»), c0], - fun `K` - (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) - c1 \ - fun `K_S` - (prod `x` (global (indt «nat»)) c2 \ - prod `Px` - (app - [global (indt «eq»), global (indt «bool»), - app - [fun `x` (global (indt «nat»)) c3 \ - app [global (const «leq»), c3, c0], c2], - global (indc «true»)]) c3 \ - app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ - fun `u0` (app [global (indt «ord»), c0]) c3 \ - match c3 - (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) - [fun `x` (global (indt «nat»)) c4 \ - fun `Px` - (app - [global (indt «eq»), global (indt «bool»), - app [global (const «leq»), c4, c0], global (indc «true»)]) - c5 \ app [c2, c4, c5]]] - _uvk_35_ = X0 - _uvk_36_ = X1 - _uvk_37_ = X2 - _uvk_38_ = X3 - _uvk_39_ = X4 - _uvk_40_ = X5 - _uvk_41_ = X6 - _uvk_42_ = X7 - _uvk_43_ = X8 - _uvk_44_ = X9 - _uvk_45_ = X10 - _uvk_46_ = global (indt «nat») - _uvk_47_ = c0 \ -global (indt «nat») - _uvk_48_ = c0 \ -fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0] - _uvk_49_ = c0 \ -app [global (indt «ord»), c0] - _uvk_50_ = c0 \ -app [global (const «oval»), c0] - _uvk_51_ = c0 \ -fun `K` - (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) - c1 \ - fun `K_S` - (prod `x` (global (indt «nat»)) c2 \ - prod `Px` - (app - [global (indt «eq»), global (indt «bool»), - app - [fun `x` (global (indt «nat»)) c3 \ - app [global (const «leq»), c3, c0], c2], global (indc «true»)]) - c3 \ app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ - fun `u0` (app [global (indt «ord»), c0]) c3 \ - match c3 (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) - [fun `x` (global (indt «nat»)) c4 \ - fun `Px` - (app - [global (indt «eq»), global (indt «bool»), - app [global (const «leq»), c4, c0], global (indc «true»)]) c5 \ - app [c2, c4, c5]] + E = app [global (indt «list»), global (const «C»)] + TY = sort (typ «elpi.tests.test_API_elaborate.58») Universe constraints: UNIVERSES: - {elpi.tests.test_quotation.28 elpi.tests.test_quotation.27} |= - Set <= is_SUB.u0 - Set <= is_SUB.u1 - Set <= elpi.tests.test_quotation.27 - is_SUB.u2 <= elpi.tests.test_quotation.28 + {elpi.tests.test_API_elaborate.59 elpi.tests.test_API_elaborate.58 + elpi.tests.test_API_elaborate.57} |= + elpi.tests.test_API_elaborate.58 < elpi.tests.test_API_elaborate.59 + elpi.tests.test_API_elaborate.59 < elpi.tests.test_API_elaborate.57 + Set <= elpi.tests.test_API_elaborate.58 + elpi.tests.test_API_elaborate.56 <= list.u0 + elpi.tests.test_API_elaborate.56 <= elpi.tests.test_API_elaborate.58 ALGEBRAIC UNIVERSES: - {elpi.tests.test_quotation.28 elpi.tests.test_quotation.27} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_quotation.28 - elpi.tests.test_quotation.27 + SORTS: α22 := Type - α23 := Type WEAK CONSTRAINTS: -B -test_inv : Type -> bool -> Type - : Type -> bool -> Type -K1_inv : forall (A : Type) (b : bool), b = true -> test_inv A b - : forall (A : Type) (b : bool), b = true -> test_inv A b -K2_inv -: -forall (A : Type) (b x : bool), -A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b - : forall (A : Type) (b x : bool), - A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b -Inductive listR_inv (A : Type) (PA : A -> Type) (idx0 : list A) : Type := - nilR_inv : idx0 = nil -> listR_inv A PA idx0 - | consR_inv : forall a : A, - PA a -> - forall xs : list A, - listR_inv A PA xs -> - idx0 = (a :: xs)%list -> listR_inv A PA idx0. - -Arguments listR_inv A%type_scope PA%function_scope idx0%list_scope -Arguments nilR_inv A%type_scope PA%function_scope idx0%list_scope _ -Arguments consR_inv A%type_scope PA%function_scope - idx0%list_scope a _ xs%list_scope _ _ -«myfalse» -Query assignments: - F = indt «False» - GR = «myfalse» -myfalse - : False -Unable to unify "bool" with "nat". -Query assignments: - Msg = Unable to unify "bool" with "nat". -nth_R = -fun (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0) (x2 : T1 x0 x1) -=> -let - fix rec (n : nat) (l : list T) {struct n} : T := - match l with - | nil => x0 - | (x :: xs)%list => match n with - | 0 => x - | S m => rec m xs - end - end in -let - fix rec0 (n : nat) (l : list T0) {struct n} : T0 := - match l with - | nil => x1 - | (x :: xs)%list => match n with - | 0 => x - | S m => rec0 m xs - end - end in -fix rec1 (n n0 : nat) (n1 : nat_R n n0) {struct n1} : - forall (l : list T) (l0 : list T0), - list_R T T0 T1 l l0 -> T1 (rec n l) (rec0 n0 l0) := - match - n1 in (nat_R s1 s2) - return - (forall (l : list T) (l0 : list T0), - list_R T T0 T1 l l0 -> T1 (rec s1 l) (rec0 s2 l0)) - with - | O_R => - let K := O_R in - (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) - (l0 : list T0) (l1 : list_R T T0 T1 l l0) => - match - l1 in (list_R _ _ _ l2 l3) - return - (T1 - match l2 with - | nil => x0 - | (x :: xs)%list => - match n2 with - | 0 => x - | S m => rec m xs - end - end - match l3 with - | nil => x1 - | (x :: xs)%list => - match n3 with - | 0 => x - | S m => rec0 m xs - end - end) - with - | nil_R _ _ _ => x2 - | cons_R _ _ _ x x3 x4 xs xs0 xs1 => - match - n4 in (nat_R n5 n6) - return - (T1 match n5 with - | 0 => x - | S m => rec m xs - end match n6 with - | 0 => x3 - | S m => rec0 m xs0 - end) - with - | O_R => x4 - | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 - end - end) 0 0 K - | S_R x x3 x4 => - let K := S_R x x3 x4 in - (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) - (l0 : list T0) (l1 : list_R T T0 T1 l l0) => - match - l1 in (list_R _ _ _ l2 l3) - return - (T1 - match l2 with - | nil => x0 - | (x5 :: xs)%list => - match n2 with - | 0 => x5 - | S m => rec m xs - end - end - match l3 with - | nil => x1 - | (x5 :: xs)%list => - match n3 with - | 0 => x5 - | S m => rec0 m xs - end - end) - with - | nil_R _ _ _ => x2 - | cons_R _ _ _ x5 x6 x7 xs xs0 xs1 => - match - n4 in (nat_R n5 n6) - return - (T1 match n5 with - | 0 => x5 - | S m => rec m xs - end match n6 with - | 0 => x6 - | S m => rec0 m xs0 - end) - with - | O_R => x7 - | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 - end - end) (S x) (S x3) K - end - : forall (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0), - T1 x0 x1 -> - forall n n0 : nat, - nat_R n n0 -> - forall (l : list T) (l0 : list T0), - list_R T T0 T1 l l0 -> T1 (nth T x0 n l) (nth T0 x1 n0 l0) - -Arguments nth_R (T T)%type_scope T%function_scope - x0 x0 x0 (n n)%nat_scope n (l l)%list_scope l +COQC tests/test_link_order5.v Query assignments: I = «foo» ----<<---- enter: @@ -4644,23 +4232,16 @@ eq_refl : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) Query assignments: - E = app [global (indt «list»), global (const «C»)] - TY = sort (typ «elpi.tests.test_API_elaborate.58») + U = «elpi.tests.test_HOAS.4» Universe constraints: UNIVERSES: - {elpi.tests.test_API_elaborate.59 elpi.tests.test_API_elaborate.58 - elpi.tests.test_API_elaborate.57} |= - elpi.tests.test_API_elaborate.58 < elpi.tests.test_API_elaborate.59 - elpi.tests.test_API_elaborate.59 < elpi.tests.test_API_elaborate.57 - Set <= elpi.tests.test_API_elaborate.58 - elpi.tests.test_API_elaborate.56 <= list.u0 - elpi.tests.test_API_elaborate.56 <= elpi.tests.test_API_elaborate.58 + {elpi.tests.test_HOAS.4} |= ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: SORTS: - α22 := Type + WEAK CONSTRAINTS: @@ -4694,6 +4275,33 @@ (prod `n` (global (indt «nat»)) c0 \ sort (typ «y.u0»)) «y» y : nat -> Type : nat -> Type +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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +«myfalse» +Query assignments: + F = indt «False» + GR = «myfalse» +myfalse + : False ----<<---- enter: coq.arity->term (parameter n explicit (global (indt «nat»)) c0 \ @@ -4703,8 +4311,6 @@ (parameter n explicit (global (indt «nat»)) c0 \ arity (global (indt «nat»))) (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) -Query assignments: - U = «foo» ----<<---- enter: std.assert-ok! (coq.typecheck @@ -4725,27 +4331,6 @@ 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» -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: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - ----<<---- enter: coq.say raw: (record foo (sort prop) Build_foo @@ -4791,156 +4376,115 @@ (record foo (sort prop) Build_foo (field [coercion off, canonical tt] bar (global (indt «True»)) c0 \ end-record)) X0 +Query assignments: + F = «elpi.tests.test_API_module.R.F» + FT = «elpi.tests.test_API_module.R.FT» + L = [submodule «elpi.tests.test_API_module.R.S» [gref (const «R.S.x»)], + module-type «elpi.tests.test_API_module.R.P1», + module-type «elpi.tests.test_API_module.R.P2», + «elpi.tests.test_API_module.R.F» module-functor + [«elpi.tests.test_API_module.R.P1», «elpi.tests.test_API_module.R.P2»], + «elpi.tests.test_API_module.R.FT» module-type-functor + [«elpi.tests.test_API_module.R.P2», «elpi.tests.test_API_module.R.P1»], + gref (const «R.a»)] + P1 = «elpi.tests.test_API_module.R.P1» + P2 = «elpi.tests.test_API_module.R.P2» + R = «elpi.tests.test_API_module.R» + S = «elpi.tests.test_API_module.R.S» ---->>---- exit: coq.env.add-indt (record foo (sort prop) Build_foo (field [coercion off, canonical tt] bar (global (indt «True»)) c0 \ end-record)) «foo» -1 - : nat -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 ] -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 -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 -COQC tests/test_vernacular2.v -File "./tests/test_param2.v", line 85, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -Query assignments: - MP_TA = «elpi.tests.test_API_module.TA» -Query assignments: - L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), - cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] +make[4]: Nothing to be done for 'real-all'. +global (indt «nat») 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 */ + T = global (indt «nat») + _uvk_5_ = global (indt «nat») + _uvk_6_ = global (indt «nat») Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.9 elpi.tests.test_HOAS.8} |= - Set <= elpi.tests.test_HOAS.8 - elpi.tests.test_HOAS.8 <= elpi.tests.test_HOAS.8 + {elpi.tests.test_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: {} FLEXIBLE UNIVERSES: SORTS: α3 := Type - α4 + α4 := Type + α5 := Type WEAK CONSTRAINTS: -COQC tests/test_projK.v -COQC tests/test_derive.v +COQC tests/test_link_order6.v +B + 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 +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/cs' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/tc' +Using coq found in /usr/bin//, from COQBIN or PATH +fun `x` X0 c0 \ app [X1, c0] Query assignments: -COQC tests/test_eq.v - 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») + X = X1 + Y = fun `x` X0 c0 \ app [X1, c0] + _uvk_34_ = X0 +«elpi.tests.test_API_typecheck.10» +Query assignments: + U = «elpi.tests.test_API_typecheck.10» 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 + {elpi.tests.test_API_typecheck.10} |= + Set <= elpi.tests.test_API_typecheck.10 ALGEBRAIC UNIVERSES: - {} + {elpi.tests.test_API_typecheck.10} FLEXIBLE UNIVERSES: - + elpi.tests.test_API_typecheck.10 SORTS: - α1 := Type - α2 := Type + WEAK CONSTRAINTS: -COQC tests/test_isK.v -COQC tests/test_param1.v -COQC tests/test_map.v -COQC tests/test_lens.v -COQC tests/test_tag.v -COQC tests/test_eqType_ast.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] +COQC tests/test_link_order7.v +fun `r` (global (indt «nat»)) c0 \ + fun `p` + (prod `y` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) + c1 \ + fun `q` (global (indt «bool»)) c2 \ + prod `y` (global (indt «nat»)) c3 \ + app + [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] +Query assignments: + Spilled_1 = c0 \ c1 \ c2 \ +prod `y` (global (indt «nat»)) c3 \ + app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] + X = fun `r` (global (indt «nat»)) c0 \ + fun `p` + (prod `y` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) + c1 \ + fun `q` (global (indt «bool»)) c2 \ + 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) 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 \ @@ -4948,6 +4492,8 @@ (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ end-record) Query assignments: + U = «foo» +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 \ @@ -4978,22 +4524,6 @@ fun x : eq_class nat => x : bool : eq_class nat -> bool p <- eq_proof ( xxx ) -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 parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ parameter A2 explicit c0 c1 \ inductive foo1 tt @@ -5021,10 +4551,6 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -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 = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ parameter A2 explicit c0 c1 \ @@ -5070,131 +4596,157 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -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 `a` c0 c2 \ c1)), - constructor Node - (arity (prod `l` (app [global (indt «tickle.tickle»), c1]) c2 \ c1))] -Deriving -Derivation map on indt «rtree» -Inductive peano : Set := Zero : peano | Succ : peano -> peano. +Query assignments: + GR = indc «Ord» + K = global (indc «Ord») + T = fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `u` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c1 c2 c3) c4 \ + fun `Px` (X10 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] + T1 = fun `u` (global (indt «nat»)) c0 \ + app + [global (indc «SubType»), global (indt «nat»), + fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], + app [global (indt «ord»), c0], app [global (const «oval»), c0], + app [global (indc «Ord»), c0], + fun `K` + (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) + c1 \ + fun `K_S` + (prod `x` (global (indt «nat»)) c2 \ + prod `Px` + (app + [global (indt «eq»), global (indt «bool»), + app + [fun `x` (global (indt «nat»)) c3 \ + app [global (const «leq»), c3, c0], c2], + global (indc «true»)]) c3 \ + app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ + fun `u0` (app [global (indt «ord»), c0]) c3 \ + match c3 + (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) + [fun `x` (global (indt «nat»)) c4 \ + fun `Px` + (app + [global (indt «eq»), global (indt «bool»), + app [global (const «leq»), c4, c0], global (indc «true»)]) + c5 \ app [c2, c4, c5]]] + _uvk_35_ = X0 + _uvk_36_ = X1 + _uvk_37_ = X2 + _uvk_38_ = X3 + _uvk_39_ = X4 + _uvk_40_ = X5 + _uvk_41_ = X6 + _uvk_42_ = X7 + _uvk_43_ = X8 + _uvk_44_ = X9 + _uvk_45_ = X10 + _uvk_46_ = global (indt «nat») + _uvk_47_ = c0 \ +global (indt «nat») + _uvk_48_ = c0 \ +fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0] + _uvk_49_ = c0 \ +app [global (indt «ord»), c0] + _uvk_50_ = c0 \ +app [global (const «oval»), c0] + _uvk_51_ = c0 \ +fun `K` + (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) + c1 \ + fun `K_S` + (prod `x` (global (indt «nat»)) c2 \ + prod `Px` + (app + [global (indt «eq»), global (indt «bool»), + app + [fun `x` (global (indt «nat»)) c3 \ + app [global (const «leq»), c3, c0], c2], global (indc «true»)]) + c3 \ app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ + fun `u0` (app [global (indt «ord»), c0]) c3 \ + match c3 (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) + [fun `x` (global (indt «nat»)) c4 \ + fun `Px` + (app + [global (indt «eq»), global (indt «bool»), + app [global (const «leq»), c4, c0], global (indc «true»)]) c5 \ + app [c2, c4, c5]] +Universe constraints: +UNIVERSES: + {elpi.tests.test_quotation.28 elpi.tests.test_quotation.27} |= + Set <= is_SUB.u0 + Set <= is_SUB.u1 + Set <= elpi.tests.test_quotation.27 + is_SUB.u2 <= elpi.tests.test_quotation.28 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_quotation.28 elpi.tests.test_quotation.27} +FLEXIBLE UNIVERSES: + elpi.tests.test_quotation.28 + elpi.tests.test_quotation.27 +SORTS: + α22 := Type + α23 := Type +WEAK CONSTRAINTS: + -Arguments Succ p -Derivation map on indt «rtree» took 0.014288 -Derivation lens on indt «rtree» - = false - : bool -Derivation lens on indt «rtree» failed, continuing -Derivation param1 on indt «rtree» -peano_eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (peano_eqb x1 x2) sort (typ X0) Query assignments: _uvk_129_ = X0 -Derivation param1 on indt «rtree» took 0.016609 -Derivation param2 on indt «rtree» -Derivation param2 on indt «rtree» took 0.019222 -Derivation tag on indt «rtree» -Derivation tag on indt «rtree» took 0.003474 -Derivation eqType_ast on indt «rtree» -Derivation eqType_ast on indt «rtree» took 0.002138 -Derivation lens_laws on indt «rtree» -Derivation lens_laws on indt «rtree» took 0.001402 -Derivation param1_congr on indt «rtree» -Derivation param1_congr on indt «rtree» took 0.006644 -Derivation param1_inhab on indt «rtree» -Derivation param1_inhab on indt «rtree» took 0.006296 -Derivation param1_functor on indt «rtree» -Derivation param1_functor on indt «rtree» took 0.006621 -Derivation fields on indt «rtree» -Derivation fields on indt «rtree» took 0.020822 -Derivation param1_trivial on indt «rtree» -Module Type TB = Funsig (A:TA) Sig End -Query assignments: - I = «eq» - P1 = «carrier» - P2 = «eq_op» -[(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] -Derivation param1_trivial on indt «rtree» took 0.290286 -Derivation induction on indt «rtree» -Derivation induction on indt «rtree» took 0.013541 -Derivation eqb on indt «rtree» +Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set +<= Prop). Query assignments: - GR = «nat» -Derivation eqb on indt «rtree» took 0.061634 -Derivation eqbcorrect on indt «rtree» + E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set +<= Prop). +COQC tests/test_link_order8.v Query assignments: - A = «elpi.tests.test_API_module.A» -Derivation eqbcorrect on indt «rtree» took 0.203111 -Derivation eqbOK on indt «rtree» -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] -Derivation eqbOK on indt «rtree» took 0.020446 -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 -Notation peano := peano.peano -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments peano.Succ p - = false + GR = const «myc» +eq_op myc t t : bool -peano.eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) +make[4]: Nothing to be done for 'real-all'. +1 + : nat +COQC tests/test_API_new_pred.v +COQC tests/test_link_order_import0.v +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/tc' 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» + 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} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_elaborator.47 -SORTS: +SORTS: + α3 := Type + α4 WEAK CONSTRAINTS: -1356 - : nat -this 3 app [c4, X0 c0 c1 c2 c3 c4] -app [c3, app [c1, c2], global (const «a»)] foo.bar -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 +COQC tests/test_query_extra_dep.v 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 @@ -5219,24 +4771,12 @@ WEAK CONSTRAINTS: -Skipping derivation map on indt «Box» since the user did not select it -Derivation lens on indt «Box» 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 *) -Derivation lens on indt «Box» took 0.017871 -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-92: -Warning: Global name tag is taken, using tag1 instead -[elpi.renamed,elpi,default] -Derivation tag on indt «Box» took 0.011817 -Derivation eqType_ast on indt «Box» -Derivation eqType_ast on indt «Box» took 0.002107 -Derivation lens_laws on indt «Box» +COQC tests/test_toposort.v Query assignments: I = «inductive_nup.r» R = parameter A explicit (sort (typ «r.u0»)) c0 \ @@ -5266,202 +4806,61 @@ typed: inductive X1 tt (arity (sort prop)) c0 \ [] ---->>---- exit: coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) -Derivation lens_laws on indt «Box» took 0.065738 ----<<---- enter: coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) X0 -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments peano.Succ p - = 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 ---->>---- exit: coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) «X1» -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» X1 : Prop X1 is not universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X1 -Derivation fields on indt «Box» took 0.032695 -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» -global (indt «nat») +COQC tests/test_synterp.v +foo : nat + : nat Query assignments: - T = global (indt «nat») - _uvk_5_ = global (indt «nat») - _uvk_6_ = global (indt «nat») + L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), + cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] +bar : bool -> nat + : bool -> nat +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_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 + {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} FLEXIBLE UNIVERSES: - + elpi.tests.test_elaborator.47 SORTS: - α3 := Type - α4 := Type - α5 := Type + WEAK CONSTRAINTS: -Derivation param1 on const «Nat.add» -Derivation eqb on indt «Box» took 0.025654 -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: - GR = const «myc1» -eq_op myc1 t1 t1 - : bool -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) -Derivation param1 on const «Nat.add» took 0.164357 -Derivation param2 on const «Nat.add» -Derivation param2 on const «Nat.add» took 0.023945 -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) -Notation peano := Peano.peano -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p - = false - : bool -Peano.eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (Peano.eqb x1 x2) -Debug: elpi lets escape exception: API coq.env.add-const cannot be used in -tactics -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) -_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 -Derivation map on indt «a» -Derivation map on indt «a» took 0.016366 +COQC tests/test_checker.v +COQC tests/test_replay.v +COQC tests/test_vernacular2.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] +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: - Spilled_1 = «elpi.tests.test_API_module.A» -Derivation lens on indt «a» -Derivation lens on indt «a» failed, continuing -Derivation param1 on indt «a» -Module IA := Struct Definition z : nat. Definition i : Type. End - -Derivation param1 on indt «a» took 0.034087 -Derivation param2 on indt «a» -COQC tests/test_lens_laws.v -Derivation param2 on indt «a» took 0.034857 -Derivation tag on indt «a» -Derivation tag on indt «a» took 0.002787 -Derivation eqType_ast on indt «a» -Derivation eqType_ast on indt «a» took 0.001947 -Derivation lens_laws on indt «a» -Derivation lens_laws on indt «a» took 0.001672 ----------------------------------- - {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: - ?X10==[ |- Type] (internal placeholder) {?elpi_evar} - ?X9==[a |- ?elpi_evar] (internal placeholder) {?e0} - ?X8==[a |- => ?elpi_evar] (internal placeholder) - -SHELF: -FUTURE GOALS STACK:?X10 -?X9 - -Coq-Elpi mapping: -RAW: -?X9 <-> c0 \ X2 c0 -?X10 <-> X0 -ELAB: -?X9 <-> X2 -?X10 <-> X1 - -X2 c0 : X1 + I = «eq» + P1 = «carrier» + P2 = «eq_op» Query assignments: - TY = X1 - X = c0 \ c1 \ -X2 c0 -Syntactic constraints: - {c0 c1} : decl c1 `a` (global (indt «bool»)) - ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ - {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.10} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α5 -WEAK CONSTRAINTS: - - -Derivation param1_congr on indt «a» -Derivation param1_congr on indt «a» took 0.002114 -Derivation param1_inhab on indt «a» -Derivation param1_inhab on indt «a» took 0.008435 -Derivation param1_functor on indt «a» -Derivation param1_functor on indt «a» took 0.008342 -Derivation fields on indt «a» -Derivation fields on indt «a» took 0.024493 -Derivation param1_trivial on indt «a» -Derivation param1_trivial on indt «a» took 0.009433 + GR = «nat» +test1 +str hello +str x ----<<---- enter: coq.say raw: (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.131»))) c0 \ @@ -5486,7 +4885,6 @@ ---->>---- exit: coq.univ.print -Derivation induction on indt «a» ----<<---- enter: std.assert-ok! (coq.typecheck-indt-decl @@ -5510,13 +4908,11 @@ ----<<---- enter: coq.upoly-decl->attribute (upoly-decl [«elpi.tests.test_arg_HOAS.131»] tt [] tt) X0 -Derivation induction on indt «a» took 0.003254 ---->>---- exit: coq.upoly-decl->attribute (upoly-decl [«elpi.tests.test_arg_HOAS.131»] tt [] tt) (get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.131»] tt [] tt)) -Derivation eqb on indt «a» ----<<---- enter: get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.131»] tt [] tt) => @@ -5529,12 +4925,17 @@ coq.env.add-indt (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.131»))) c0 \ []) «X3» -Derivation eqb on indt «a» took 0.015799 -Derivation eqbcorrect on indt «a» -Notation peano := Peano.peano -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p +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] ----<<---- enter: coq.say raw: (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.139»))) c0 \ @@ -5593,141 +4994,6 @@ coq.env.add-indt (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.139»))) c0 \ []) X1 -Module -Peano -:= Struct - Inductive peano : Set := - Zero : example4.peano | Succ : example4.peano -> example4.peano. - Definition peano_rect : - forall P : example4.peano -> Type, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition peano_ind : - forall P : example4.peano -> Prop, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition peano_rec : - forall P : example4.peano -> Set, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition peano_sind : - forall P : example4.peano -> SProp, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition Peano_map : example4.peano -> example4.peano. - Inductive is_peano : example4.peano -> Type := - is_Zero : is_peano example4.Zero - | is_Succ : forall p : example4.peano, - is_peano p -> is_peano (example4.Succ p). - Definition is_peano_rect : - forall P : forall s1 : example4.peano, is_peano s1 -> Type, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition is_peano_ind : - forall P : forall s1 : example4.peano, is_peano s1 -> Prop, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition is_peano_rec : - forall P : forall s1 : example4.peano, is_peano s1 -> Set, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition is_peano_sind : - forall P : forall s1 : example4.peano, is_peano s1 -> SProp, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition reali_is_peano : reali_db example4.peano is_peano. - Definition reali_is_peano_Zero : reali_db example4.Zero is_Zero. - Definition reali_is_peano_Succ : reali_db example4.Succ is_Succ. - Inductive peano_R : example4.peano -> example4.peano -> Set := - Zero_R : peano_R example4.Zero example4.Zero - | Succ_R : forall p p0 : example4.peano, - peano_R p p0 -> - peano_R (example4.Succ p) (example4.Succ p0). - Definition peano_R_rect : - forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Type, - P example4.Zero example4.Zero Zero_R -> - (forall (p p0 : example4.peano) (p1 : peano_R p p0), - P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> - forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. - Definition peano_R_ind : - forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Prop, - P example4.Zero example4.Zero Zero_R -> - (forall (p p0 : example4.peano) (p1 : peano_R p p0), - P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> - forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. - Definition peano_R_rec : - forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Set, - P example4.Zero example4.Zero Zero_R -> - (forall (p p0 : example4.peano) (p1 : peano_R p p0), - P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> - forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. - Definition peano_R_sind : - forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> SProp, - P example4.Zero example4.Zero Zero_R -> - (forall (p p0 : example4.peano) (p1 : peano_R p p0), - P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> - forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. - Definition param_peano_R : - param_db example4.peano example4.peano peano_R. - Definition param_Zero_R : param_db example4.Zero example4.Zero Zero_R. - Definition param_Succ_R : param_db example4.Succ example4.Succ Succ_R. - Definition Peano_tag : example4.peano -> BinNums.positive. - Definition congr_is_Zero : is_Zero = is_Zero. - Definition congr_is_Succ : - forall (x : example4.peano) (p1 p2 : is_peano x), - p1 = p2 -> is_Succ x p1 = is_Succ x p2. - Definition is_peano_inhab : forall x : example4.peano, is_peano x. - Definition is_peano_functor : - forall x : example4.peano, is_peano x -> is_peano x. - Record box_peano_Zero : Type := Box_peano_Zero { }. - Record box_peano_Succ : Type := Box_peano_Succ - { Box_peano_Succ_0 : example4.peano }. - Definition Box_peano_Succ_0 : box_peano_Succ -> example4.peano. - Definition Peano_fields_t : BinNums.positive -> Type. - Definition Peano_fields : - forall i : example4.peano, Peano_fields_t (Peano_tag i). - Definition Peano_construct : - forall p : BinNums.positive, Peano_fields_t p -> option example4.peano. - Parameter Peano_constructP : - forall i : example4.peano, - Peano_construct (Peano_tag i) (Peano_fields i) = Some i. - Definition is_peano_trivial : - forall x : example4.peano, - {u : is_peano x & forall v : is_peano x, u = v}. - Definition Peano_induction : - forall P : example4.peano -> Type, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall s1 : example4.peano, is_peano s1 -> P s1. - Definition Peano_eqb_fields : - (example4.peano -> example4.peano -> bool) -> - forall x : BinNums.positive, - Peano_fields_t x -> Peano_fields_t x -> bool. - Definition Peano_eqb : example4.peano -> example4.peano -> bool. - Parameter Peano_eqb_correct : - forall x : example4.peano, eqb_correct_on Peano_eqb x. - Parameter Peano_eqb_refl : - forall x : example4.peano, eqb_refl_on Peano_eqb x. - Parameter Peano_eqb_OK : - forall x1 x2 : example4.peano, reflect (x1 = x2) (Peano_eqb x1 x2). - End - - = false - : bool -Peano.Peano_eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (Peano.Peano_eqb x1 x2) ---->>---- exit: get-option coq:udecl-cumul (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.139»] tt [] tt) => @@ -5744,34 +5010,175 @@ X4 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X4 -Derivation eqbcorrect on indt «a» took 0.027825 -Derivation eqbOK on indt «a» -Derivation eqbOK on indt «a» took 0.002973 -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» -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] -«elpi.tests.test_API_typecheck.10» +COQC tests/test_ltac2.v +synterp [str X] +interp [str X] +synterp [int 1] +interp [int 1] +synterp [trm _] +interp [trm (app [global (indc «S»), global (indc «O»)])] +synterp +[const-decl x (some _) + (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] +interp +[const-decl x + (some + (fun `P` (global (indt «bool»)) c0 \ + fun `Q` (global (indt «bool»)) c1 \ global (indc «O»))) + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + arity (global (indt «nat»)))] +synterp +[const-decl x none + (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] +interp +[const-decl x none + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + arity (global (indt «nat»)))] +synterp +[indt-decl + (parameter P explicit _ c0 \ + parameter Q explicit _ c1 \ + record x _ K + (field [coercion off, canonical tt] f1 _ c2 \ + field [coercion off, canonical tt] f2 _ c3 \ end-record))] +interp +[indt-decl + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + record x (sort (typ «Set»)) K + (field [coercion off, canonical tt] f1 (global (indt «nat»)) c2 \ + field [coercion off, canonical tt] f2 + (app [global (indt «eq»), global (indt «nat»), c2, c2]) c3 \ + end-record))] +synterp +[indt-decl + (parameter P explicit _ c0 \ + inductive x tt (parameter Q explicit _ c1 \ arity _) c1 \ + [constructor K (parameter Q explicit _ c2 \ arity _), + constructor R (parameter Q explicit _ c2 \ arity _)])] Query assignments: - U = «elpi.tests.test_API_typecheck.10» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_typecheck.10} |= - Set <= elpi.tests.test_API_typecheck.10 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_typecheck.10} -FLEXIBLE UNIVERSES: - elpi.tests.test_API_typecheck.10 -SORTS: - -WEAK CONSTRAINTS: - + GR = const «myc1» +interp +[indt-decl + (parameter P explicit (global (indt «bool»)) c0 \ + inductive x tt + (parameter Q explicit (global (indt «bool»)) c1 \ + arity (prod `_` (global (indt «nat»)) c2 \ sort (typ «Set»))) c1 \ + [constructor K + (parameter Q explicit (global (indt «bool»)) c2 \ + arity + (prod `_` (global (indt «nat»)) c3 \ + app + [c1, c2, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]])), + constructor R + (parameter Q explicit (global (indt «bool»)) c2 \ + arity + (prod `w` (global (indt «bool»)) c3 \ + app [c1, c2, app [global (indc «S»), global (indc «O»)]]))])] +eq_op myc1 t1 t1 + : bool +synterp +[ctx-decl + (context-item A explicit _ none c0 \ + context-item B explicit _ none c1 \ context-end)] +interp +[ctx-decl + (context-item A explicit (global (indt «nat»)) none c0 \ + context-item B explicit (global (indt «bool»)) none c1 \ context-end)] +synterp [str X] +interp [str X] +synterp [int 1] +interp [int 1] +synterp [trm _] +interp [trm (app [global (indc «S»), global (indc «O»)])] +synterp +[const-decl x (some _) + (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] +interp +[const-decl x + (some + (fun `P` (global (indt «bool»)) c0 \ + fun `Q` (global (indt «bool»)) c1 \ global (indc «O»))) + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + arity (global (indt «nat»)))] +synterp +[const-decl x none + (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] +interp +[const-decl x none + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + arity (global (indt «nat»)))] +synterp +[indt-decl + (parameter P explicit _ c0 \ + parameter Q explicit _ c1 \ + record x _ K + (field [coercion off, canonical tt] f1 _ c2 \ + field [coercion off, canonical tt] f2 _ c3 \ end-record))] +interp +[indt-decl + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + record x (sort (typ «Set»)) K + (field [coercion off, canonical tt] f1 (global (indt «nat»)) c2 \ + field [coercion off, canonical tt] f2 + (app [global (indt «eq»), global (indt «nat»), c2, c2]) c3 \ + end-record))] +synterp +[indt-decl + (parameter P explicit _ c0 \ + inductive x tt (parameter Q explicit _ c1 \ arity _) c1 \ + [constructor K (parameter Q explicit _ c2 \ arity _), + constructor R (parameter Q explicit _ c2 \ arity _)])] +interp +[indt-decl + (parameter P explicit (global (indt «bool»)) c0 \ + inductive x tt + (parameter Q explicit (global (indt «bool»)) c1 \ + arity (prod `_` (global (indt «nat»)) c2 \ sort (typ «Set»))) c1 \ + [constructor K + (parameter Q explicit (global (indt «bool»)) c2 \ + arity + (prod `_` (global (indt «nat»)) c3 \ + app + [c1, c2, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]])), + constructor R + (parameter Q explicit (global (indt «bool»)) c2 \ + arity + (prod `w` (global (indt «bool»)) c3 \ + app [c1, c2, app [global (indc «S»), global (indc «O»)]]))])] +synterp +[ctx-decl + (context-item A explicit _ none c0 \ + context-item B explicit _ none c1 \ context-end)] +interp +[ctx-decl + (context-item A explicit (global (indt «nat»)) none c0 \ + context-item B explicit (global (indt «bool»)) none c1 \ context-end)] +a : nat -Derivation param1 on indt «b» took 0.036023 -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.002995 +a is not universe polymorphic +a is transparent +Expands to: Constant elpi.tests.test_synterp.X.a +Module X := Struct Definition a : nat. End + +Module A := Struct Definition a : nat. End + +COQC tests/test_libobject_B.v Query assignments: S = sort (typ «elpi.tests.test_elaborator.50») T = sort (typ «elpi.tests.test_elaborator.49») @@ -5795,153 +5202,106 @@ WEAK CONSTRAINTS: -Derivation eqType_ast on indt «b» -Derivation eqType_ast on indt «b» took 0.002233 -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.004491 -Derivation param1_functor on indt «b» -Derivation param1_functor on indt «b» took 0.009130 -Derivation fields on indt «b» -Derivation fields on indt «b» took 0.012798 -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.003299 -Derivation eqb on indt «b» -Query assignments: - P = const «eq_op» +1356 + : nat Query assignments: - Spilled_1 = «elpi.tests.test_API_module.IA» -Derivation eqb on indt «b» took 0.083276 -Derivation eqbcorrect on indt «b» -File "./tests/test_vernacular2.v", line 11, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -Derivation eqbcorrect on indt «b» took 0.029989 -Derivation eqbOK on indt «b» -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular2.v", line 11, column 24, character 361:), - attribute elpi.phase (leaf-str interp), - attribute fwd_compat_attr (leaf-str )] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular2.v", line 12, column 0, character 366:), - attribute elpi.phase (leaf-str interp), - attribute fwd_compat_attr (leaf-str )] -Derivation eqbOK on indt «b» took 0.011070 -[trm c0, trm (app [global (const «Nat.add»), c0, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ -[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -[trm c0, trm c1] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm (app [global (const «Nat.add»), c0, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -a_eqb - : a -> a -> bool -b_eqb - : b -> b -> bool -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -[trm (app [global (indc «O»), global (indc «O»)])] -Inductive peano : Set := Zero : peano | Succ : peano -> peano. + C = «pc» +it = elpi_subproof + : True +it : True -Arguments Succ 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 */ - = false - : bool -eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (eqb x1 x2) -[trm c0] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[int 1] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[int -1] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[str a] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[str a] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[str x] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm (app [global (const «Nat.add»), c0, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - {c0 c1} : - decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ -[trm c0] - {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 */ +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 +this 3 app [c4, X0 c0 c1 c2 c3 c4] +app [c3, app [c1, c2], global (const «a»)] foo.bar +COQC tests/test_link_order9.v +---------------------------------- + {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: + ?X10==[ |- Type] (internal placeholder) {?elpi_evar} + ?X9==[a |- ?elpi_evar] (internal placeholder) {?e0} + ?X8==[a |- => ?elpi_evar] (internal placeholder) + +SHELF: +FUTURE GOALS STACK:?X10 +?X9 + +Coq-Elpi mapping: +RAW: +?X9 <-> c0 \ X2 c0 +?X10 <-> X0 +ELAB: +?X9 <-> X2 +?X10 <-> X1 + +X2 c0 : X1 Query assignments: - W = const «W» -Inductive peano : Set := - Zero : Peano.peano | Succ : Peano.peano -> Peano.peano. + TY = X1 + X = c0 \ c1 \ +X2 c0 +Syntactic constraints: + {c0 c1} : decl c1 `a` (global (indt «bool»)) + ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ + {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.10} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α5 +WEAK CONSTRAINTS: + -Arguments Peano.Succ p - = false - : bool -Peano.eqb_OK - : forall x1 x2 : Peano.peano, reflect (x1 = x2) (Peano.eqb x1 x2) Query assignments: - C = «pc» -Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). + P = /build/reproducible-path/coq-elpi-2.1.0/elpi/elpi_elaborator.elpi +a + : nat Query assignments: - E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). + GR = indt «X3» +Universe constraints: +UNIVERSES: + {elpi.tests.test_arg_HOAS.147} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_arg_HOAS.147 +SORTS: + +WEAK CONSTRAINTS: + + +COQC tests/test_link_order_import1.v +L= [p 1] +COQC tests/test_link_order_import2.v Query assignments: - GR = «Nat.add» - MP = «Coq.Init.Datatypes» + P = const «eq_op» +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] +########################## testing APPS ############################ +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/derive' +Using coq found in /usr/bin//, from COQBIN or PATH +Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory + +Debug: elpi lets escape exception: API coq.env.add-const cannot be used in +tactics 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. @@ -5957,125 +5317,18 @@ 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] -Query assignments: - GR = indt «X3» -Universe constraints: -UNIVERSES: - {elpi.tests.test_arg_HOAS.147} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_arg_HOAS.147 -SORTS: - -WEAK CONSTRAINTS: - - Raw term: app [global (const «add»), primitive (float64 24000000000000), primitive (float64 1)] Nice term: 24000000000000 + 1 Red: 24000000000001 -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.IA» -i - : Type 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 -[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» -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 -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) -Debug: elpi lets escape exception: Attribute foo2 is not supported -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 -COQC tests/test_fields.v -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.TA» Universe constraints: UNIVERSES: @@ -6096,6 +5349,7 @@ : Prop K21 true : myind1 true true : myind1 true true +COQDEP VFILES Query assignments: GR = indt «X4» Universe constraints: @@ -6179,9 +5433,6 @@ X5 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X5 -Query assignments: - P = const «eq_op» - W = indt «nat» ----<<---- enter: coq.say raw: (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.158»))) c0 \ @@ -6462,6 +5713,50 @@ Arguments f2 (T T1)%type_scope x f2 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f2 +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») ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ X0)) c0 \ @@ -6613,50 +5908,6 @@ Arguments f4 (T T1)%type_scope x f4 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f4 -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») ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «uuu»)) c0 \ @@ -6783,6 +6034,9 @@ Arguments f6 (T T1)%type_scope x f6 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f6 +Query assignments: + GR = «Nat.add» + MP = «Coq.Init.Datatypes» ----<<---- enter: coq.arity->term (arity @@ -6821,6 +6075,8 @@ coq.env.add-const f7 (pglobal (const «f6») «Set») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) X2 «f7» +Query assignments: + W = const «W» ----<<---- enter: coq.arity->term (arity X0) X1 ---->>---- exit: coq.arity->term (arity X1) X1 ----<<---- enter: @@ -7032,211 +6288,43 @@ (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.201»)) c1 \ prod `x` c0 c2 \ c0) X7 «f8''» +COQC tests/test_libobject_C.v +File "./tests/test_vernacular2.v", line 11, characters 2-17: +Warning: This command does not support this attribute: fwd_compat_attr. +[unsupported-attributes,parsing,default] [attribute elpi.loc (leaf-loc - File "./tests/test_tactic.v", line 314, column 10, character 6765:), - attribute elpi.phase (leaf-str interp)] -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} -FLEXIBLE UNIVERSES: - elpi.tests.test_elaborator.54 - elpi.tests.test_elaborator.53 -SORTS: - -WEAK CONSTRAINTS: - - -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 -Query assignments: -prim_int_eq : eq_test prim_int - : eq_test prim_int - 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»] -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 -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.TA» -Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End -Query assignments: - C1 = const «C1» - GR1 = const «c12» - GR2 = const «c1t» - GR3 = const «c1f» -fun x : C1 => x : C2 - : C1 -> C2 -fun (x : C1) (_ : x) => true - : forall x : C1, x -> bool -fun x : C1 => x 3 - : C1 -> nat -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 -_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 -Query assignments: - _uvk_6_ = «nuind.u0» - _uvk_7_ = «nuind.u1» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {nuind.u1 nuind.u0} -FLEXIBLE UNIVERSES: - nuind.u1 - nuind.u0 -SORTS: - -WEAK CONSTRAINTS: - - -_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 -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 -_f4_set_view : forall A : Type, set_view _f4 - : forall A : Type, set_view _f4 -_pf3_set_view : forall A : Type, set_view _pf3 - : forall A : Type, set_view _pf3 -_pf4_set_view : forall A : Type, set_view _pf4 - : forall A : Type, set_view _pf4 -_f1_f2_exchange : exchange _f1 _f2 - : exchange _f1 _f2 -_f2_f1_exchange : exchange _f2 _f1 - : exchange _f2 _f1 -_f3_f4_exchange : forall A : Type, exchange _f3 _f4 - : forall A : Type, exchange _f3 _f4 -_f4_f3_exchange : forall A : Type, exchange _f4 _f3 - : forall A : Type, exchange _f4 _f3 -_pf3_pf4_exchange : forall A : Type, exchange _pf3 _pf4 - : forall A : Type, exchange _pf3 _pf4 -_pf4_pf3_exchange : forall A : Type, exchange _pf4 _pf3 - : forall A : Type, exchange _pf4 _pf3 + File "./tests/test_vernacular2.v", line 11, column 24, character 361:), + attribute elpi.phase (leaf-str interp), + attribute fwd_compat_attr (leaf-str )] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular2.v", line 12, column 0, character 366:), + attribute elpi.phase (leaf-str interp), + attribute fwd_compat_attr (leaf-str )] +[trm c0, trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ +[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +[trm c0, trm c1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ Query assignments: C = «Nat.add» F = TODO @@ -7309,322 +6397,127 @@ global (indt «nat») _uvk_52_ = c0 \ c1 \ c2 \ c3 \ global (indt «nat») -const-decl D - (some - (fun `i` (global (indt «I»)) c0 \ - fun `l` (app [global (indt «L»), c0]) c1 \ global (indt «True»))) - (parameter i maximal (global (indt «I»)) c0 \ - parameter l maximal (app [global (indt «L»), c0]) c1 \ arity (sort prop)) -const-decl D - (some - (fun `i` (global (indt «I»)) c0 \ - fun `H` (app [global (indt «L»), c0]) c1 \ global (indt «True»))) - (parameter i maximal (global (indt «I»)) c0 \ - parameter H maximal (app [global (indt «L»), c0]) c1 \ arity (sort prop)) -const-decl D - (some - (fun `i` (global (indt «I»)) c0 \ - fun `H` (app [global (indt «L»), c0]) c1 \ - fun `n` (global (indt «nat»)) c2 \ global (indt «True»))) - (parameter i maximal (global (indt «I»)) c0 \ - parameter H maximal (app [global (indt «L»), c0]) c1 \ - parameter n explicit (global (indt «nat»)) c2 \ arity (sort prop)) -Universe constraints: -Entry binder_constr is -[ LEFTA - [ "exists2"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; ","; term LEVEL - "200"; "&"; term LEVEL "200" - | "exists2"; "'"; pattern LEVEL "0"; ","; term LEVEL "200"; "&"; term LEVEL - "200" - | "exists2"; name; ":"; term LEVEL "200"; ","; term LEVEL "200"; "&"; term - LEVEL "200" - | "exists2"; name; ","; term LEVEL "200"; "&"; term LEVEL "200" - | "exists"; "!"; open_binders; ","; term LEVEL "200" - | "exists"; open_binders; ","; term LEVEL "200" - | "forall"; open_binders; ","; term LEVEL "200" - | "fun"; open_binders; "=>"; term LEVEL "200" - | "let"; "fix"; fix_decl; "in"; term LEVEL "200" - | "let"; "cofix"; cofix_body; "in"; term LEVEL "200" - | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; "in"; term LEVEL - "200" - | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; case_type; "in"; - term LEVEL "200" - | "let"; "'"; pattern LEVEL "200"; "in"; pattern LEVEL "200"; ":="; term - LEVEL "200"; case_type; "in"; term LEVEL "200" - | "let"; name; binders; let_type_cstr; ":="; term LEVEL "200"; "in"; term - LEVEL "200" - | "let"; [ "("; LIST0 name SEP ","; ")" | "()" ]; as_return_type; ":="; - term LEVEL "200"; "in"; term LEVEL "200" - | "if"; term LEVEL "200"; as_return_type; "then"; term LEVEL "200"; "else"; - term LEVEL "200" - | "fix"; fix_decls - | "cofix"; cofix_decls ] ] - -Entry constr is -[ LEFTA - [ "@"; global; univ_annot - | term LEVEL "8" ] ] - -Entry lconstr is -[ LEFTA - [ term LEVEL "200" ] ] - -Entry term is -[ "200" RIGHTA - [ ] -| "100" RIGHTA - [ SELF; "<:"; term LEVEL "200" - | SELF; "<<:"; term LEVEL "200" - | SELF; ":>"; term LEVEL "200" - | SELF; ":"; term LEVEL "200" ] -| "99" RIGHTA - [ SELF; "->"; term LEVEL "200" ] -| "95" RIGHTA - [ SELF; "<->"; NEXT ] -| "90" RIGHTA - [ ] -| "85" RIGHTA - [ SELF; "\\/"; term LEVEL "85" ] -| "80" RIGHTA - [ SELF; "/\\"; term LEVEL "80" ] -| "75" RIGHTA - [ "~"; term LEVEL "75" ] -| "70" RIGHTA - [ SELF; ">"; NEXT - | SELF; ">="; NEXT - | SELF; "<"; NEXT; "<="; NEXT - | SELF; "<"; NEXT; "<"; NEXT - | SELF; "<"; NEXT - | SELF; "<="; NEXT; "<"; NEXT - | SELF; "<="; NEXT; "<="; NEXT - | SELF; "<="; NEXT - | SELF; "<>"; NEXT; ":>"; NEXT - | SELF; "<>"; NEXT - | SELF; "="; NEXT; "="; NEXT - | SELF; "="; NEXT; ":>"; NEXT - | SELF; "="; NEXT ] -| "60" RIGHTA - [ SELF; "++"; term LEVEL "60" - | SELF; "::"; term LEVEL "60" ] -| "50" LEFTA - [ SELF; "||"; NEXT - | SELF; "-"; NEXT - | SELF; "+"; NEXT ] -| "40" LEFTA - [ SELF; "&&"; NEXT - | SELF; "/"; NEXT - | SELF; "*"; NEXT ] -| "35" RIGHTA - [ "/"; term LEVEL "35" - | "-"; term LEVEL "35" ] -| "30" RIGHTA - [ SELF; "^"; term LEVEL "30" ] -| LEFTA - [ IDENT "XX"; FIELD "xxx"; LIST0 arg ] -| "10" LEFTA - [ SELF; LIST1 arg - | "@"; global; univ_annot; LIST0 NEXT - | "@"; pattern_ident; LIST1 identref - | binder_constr ] -| "9" LEFTA - [ ".."; term LEVEL "0"; ".." ] -| "8" LEFTA - [ ] -| "1" LEFTA - [ SELF; ".("; "@"; global; univ_annot; LIST0 (term LEVEL "9"); ")" - | SELF; ".("; global; univ_annot; LIST0 arg; ")" - | SELF; "%"; IDENT - | SELF; "%_"; IDENT ] -| "0" LEFTA - [ "lib"; ":"; "@"; qualified_name - | "lib"; ":"; qualified_name - | QUOTATION "lp:" - | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "&"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL - "200"; "&"; term LEVEL "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL - "200"; "&"; term LEVEL "200"; "}" - | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "&"; term LEVEL - "200"; "}" - | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "&"; - term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "&"; - term LEVEL "200"; "}" - | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "&"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "}" - | "{"; term LEVEL "99"; "}" - | IDENT "ltac"; ":"; "("; ltac_expr; ")" - | "("; term LEVEL "200"; ","; term LEVEL "200"; ","; LIST1 (term LEVEL - "200") SEP ","; ")" - | "("; term LEVEL "200"; ","; term LEVEL "200"; ")" - | "("; term LEVEL "200"; ")" - | "{|"; record_declaration; '|}' - | "`{"; term LEVEL "200"; "}" - | "`("; term LEVEL "200"; ")" - | NUMBER - | atomic_constr - | term_match - | ident; fields; univ_annot - | ident; univ_annot - | string - | test_array_opening; "["; "|"; array_elems; "|"; lconstr; type_cstr; - test_array_closing; "|"; "]"; univ_annot ] ] - -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»))] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 325, column 12, character 7018:), - attribute elpi.phase (leaf-str interp)] -skip int 1 -skip str 33 -skip trm (global (indt «bool»)) -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 */ -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 325, column 12, character 7018:), - attribute elpi.phase (leaf-str interp)] -skip int 1 -skip str 33 -skip trm (global (indt «bool»)) -nat -> bool -> True - : Prop -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 334, column 12, character 7204:), - attribute elpi.phase (leaf-str interp)] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 334, column 12, character 7204:), - attribute elpi.phase (leaf-str interp)] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 338, column 30, character 7305:), - attribute elpi.phase (leaf-str interp)] -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 338, column 30, character 7305:), - attribute elpi.phase (leaf-str interp)] -[attribute elpi.loc - (leaf-loc File "./tests/test_tactic.v", line 346, column 7, character 7481:), - attribute elpi.phase (leaf-str interp)] -[attribute elpi.loc - (leaf-loc File "./tests/test_tactic.v", line 346, column 7, character 7481:), - attribute elpi.phase (leaf-str interp)] -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 +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +[trm (app [global (indc «O»), global (indc «O»)])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +Query q X0 +[trm c0] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[int 1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +Query r X0 +Result r 1 +[int -1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[str a] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[str a] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[str x] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +COQC tests/test_readme.v +COQC tests/test_derive_stdlib.v +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +[trm c0] + {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 */ +COQC tests/test_param2.v +COQC tests/test_idx2inv.v +COQC tests/test_invert.v +global (indc «O») +app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +COQC examples/usage.v Query assignments: - F = «elpi.tests.test_API_module.R.F» - FT = «elpi.tests.test_API_module.R.FT» - L = [submodule «elpi.tests.test_API_module.R.S» [gref (const «R.S.x»)], - module-type «elpi.tests.test_API_module.R.P1», - module-type «elpi.tests.test_API_module.R.P2», - «elpi.tests.test_API_module.R.F» module-functor - [«elpi.tests.test_API_module.R.P1», «elpi.tests.test_API_module.R.P2»], - «elpi.tests.test_API_module.R.FT» module-type-functor - [«elpi.tests.test_API_module.R.P2», «elpi.tests.test_API_module.R.P1»], - gref (const «R.a»)] - P1 = «elpi.tests.test_API_module.R.P1» - P2 = «elpi.tests.test_API_module.R.P2» - R = «elpi.tests.test_API_module.R» - S = «elpi.tests.test_API_module.R.S» + 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} +FLEXIBLE UNIVERSES: + elpi.tests.test_elaborator.54 + elpi.tests.test_elaborator.53 +SORTS: + +WEAK CONSTRAINTS: + + +COQC tests/test_link_order_import3.v Query assignments: - Spilled_1 = const «nuc» -nuc : forall x : nat, C1 -> C3 x + _uvk_6_ = «nuind.u0» + _uvk_7_ = «nuind.u1» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {nuind.u1 nuind.u0} +FLEXIBLE UNIVERSES: + nuind.u1 + nuind.u0 +SORTS: + +WEAK CONSTRAINTS: + -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 -c0 global (indt «nat») +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 +[cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] Query assignments: - T = global (indt «nat») + L = [cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] + P = const «eq_op» + W = const «Z1» +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: C = «Nat.add» F = TODO @@ -7687,40 +6580,244 @@ global (indt «nat») _uvk_61_ = c0 \ c1 \ c2 \ c3 \ global (indt «nat») +COQC examples/readme.v +const-decl D + (some + (fun `i` (global (indt «I»)) c0 \ + fun `l` (app [global (indt «L»), c0]) c1 \ global (indt «True»))) + (parameter i maximal (global (indt «I»)) c0 \ + parameter l maximal (app [global (indt «L»), c0]) c1 \ arity (sort prop)) +const-decl D + (some + (fun `i` (global (indt «I»)) c0 \ + fun `H` (app [global (indt «L»), c0]) c1 \ global (indt «True»))) + (parameter i maximal (global (indt «I»)) c0 \ + parameter H maximal (app [global (indt «L»), c0]) c1 \ arity (sort prop)) +const-decl D + (some + (fun `i` (global (indt «I»)) c0 \ + fun `H` (app [global (indt «L»), c0]) c1 \ + fun `n` (global (indt «nat»)) c2 \ global (indt «True»))) + (parameter i maximal (global (indt «I»)) c0 \ + parameter H maximal (app [global (indt «L»), c0]) c1 \ + parameter n explicit (global (indt «nat»)) c2 \ arity (sort prop)) +test_inv : Type -> bool -> Type + : Type -> bool -> Type +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»)]]] +K1_inv : forall (A : Type) (b : bool), b = true -> test_inv A b + : forall (A : Type) (b : bool), b = true -> test_inv A b +K2_inv +: +forall (A : Type) (b x : bool), +A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b + : forall (A : Type) (b x : bool), + A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b +Inductive listR_inv (A : Type) (PA : A -> Type) (idx0 : list A) : Type := + nilR_inv : idx0 = nil -> listR_inv A PA idx0 + | consR_inv : forall a : A, + PA a -> + forall xs : list A, + listR_inv A PA xs -> + idx0 = (a :: xs)%list -> listR_inv A PA idx0. + +Arguments listR_inv A%type_scope PA%function_scope idx0%list_scope +Arguments nilR_inv A%type_scope PA%function_scope idx0%list_scope _ +Arguments consR_inv A%type_scope PA%function_scope + idx0%list_scope a _ xs%list_scope _ _ +c0 global (indt «nat») Query assignments: + T = global (indt «nat») +nth_R = +fun (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0) (x2 : T1 x0 x1) +=> +let + fix rec (n : nat) (l : list T) {struct n} : T := + match l with + | nil => x0 + | (x :: xs)%list => match n with + | 0 => x + | S m => rec m xs + end + end in +let + fix rec0 (n : nat) (l : list T0) {struct n} : T0 := + match l with + | nil => x1 + | (x :: xs)%list => match n with + | 0 => x + | S m => rec0 m xs + end + end in +fix rec1 (n n0 : nat) (n1 : nat_R n n0) {struct n1} : + forall (l : list T) (l0 : list T0), + list_R T T0 T1 l l0 -> T1 (rec n l) (rec0 n0 l0) := + match + n1 in (nat_R s1 s2) + return + (forall (l : list T) (l0 : list T0), + list_R T T0 T1 l l0 -> T1 (rec s1 l) (rec0 s2 l0)) + with + | O_R => + let K := O_R in + (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) + (l0 : list T0) (l1 : list_R T T0 T1 l l0) => + match + l1 in (list_R _ _ _ l2 l3) + return + (T1 + match l2 with + | nil => x0 + | (x :: xs)%list => + match n2 with + | 0 => x + | S m => rec m xs + end + end + match l3 with + | nil => x1 + | (x :: xs)%list => + match n3 with + | 0 => x + | S m => rec0 m xs + end + end) + with + | nil_R _ _ _ => x2 + | cons_R _ _ _ x x3 x4 xs xs0 xs1 => + match + n4 in (nat_R n5 n6) + return + (T1 match n5 with + | 0 => x + | S m => rec m xs + end match n6 with + | 0 => x3 + | S m => rec0 m xs0 + end) + with + | O_R => x4 + | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 + end + end) 0 0 K + | S_R x x3 x4 => + let K := S_R x x3 x4 in + (fun (n2 n3 : nat) (n4 : nat_R n2 n3) (l : list T) + (l0 : list T0) (l1 : list_R T T0 T1 l l0) => + match + l1 in (list_R _ _ _ l2 l3) + return + (T1 + match l2 with + | nil => x0 + | (x5 :: xs)%list => + match n2 with + | 0 => x5 + | S m => rec m xs + end + end + match l3 with + | nil => x1 + | (x5 :: xs)%list => + match n3 with + | 0 => x5 + | S m => rec0 m xs + end + end) + with + | nil_R _ _ _ => x2 + | cons_R _ _ _ x5 x6 x7 xs xs0 xs1 => + match + n4 in (nat_R n5 n6) + return + (T1 match n5 with + | 0 => x5 + | S m => rec m xs + end match n6 with + | 0 => x6 + | S m => rec0 m xs0 + end) + with + | O_R => x7 + | S_R m m0 m1 => rec1 m m0 m1 xs xs0 xs1 + end + end) (S x) (S x3) K + end + : forall (T T0 : Type) (T1 : T -> T0 -> Type) (x0 : T) (x1 : T0), + T1 x0 x1 -> + forall n n0 : nat, + nat_R n n0 -> + forall (l : list T) (l0 : list T0), + list_R T T0 T1 l l0 -> T1 (nth T x0 n l) (nth T0 x1 n0 l0) + +Arguments nth_R (T T)%type_scope T%function_scope + x0 x0 x0 (n n)%nat_scope n (l l)%list_scope l +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: + D = X0 R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, c0], - global (indc «O»), global (const «p»)] + [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»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, c0]] - _uvk_164_ = X0 - _uvk_165_ = X1 -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»))] + [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 */ Query assignments: - X = «elpi.tests.test_API.1» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API.1} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - + P = const «eq_op» + W = indt «nat» +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]) +Universe constraints: +COQC tests/test_projK.v +COQC tests/test_derive.v +COQC tests/test_eq.v +COQC tests/test_param1.v +COQC tests/test_isK.v +COQC tests/test_map.v +COQC tests/test_lens.v +Debug: elpi lets escape exception: Attribute foo2 is not supported Query assignments: D = parameter A X0 (sort (typ «tx.u0»)) c0 \ inductive tx X1 @@ -7773,42 +6870,115 @@ WEAK CONSTRAINTS: +pred_R = +fun (n n0 : nat) (n1 : nat_R n n0) => +match + n1 in (nat_R n2 n3) + return + (nat_R match n2 with + | 0 => n + | S u => u + end match n3 with + | 0 => n0 + | S u => u + end) +with +| O_R => n1 +| S_R _ _ u1 => u1 +end + : forall n n0 : nat, nat_R n n0 -> nat_R (Nat.pred n) (Nat.pred n0) + +Arguments pred_R (n n)%nat_scope n +pred_R : nat2nat_R Nat.pred Nat.pred + : nat2nat_R Nat.pred Nat.pred +predn_R : nat2nat_R predn predn + : nat2nat_R predn predn +add_R : nat2nat2nat_R Nat.add Nat.add + : nat2nat2nat_R Nat.add Nat.add +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 +File "./tests/test_param2.v", line 85, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +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 `a` c0 c2 \ c1)), + constructor Node + (arity (prod `l` (app [global (indt «tickle.tickle»), c1]) c2 \ c1))] +Deriving +Derivation map on indt «rtree» +Derivation map on indt «rtree» took 0.009318 +Derivation lens on indt «rtree» +Derivation lens on indt «rtree» failed, continuing +Derivation param1 on indt «rtree» +Derivation param1 on indt «rtree» took 0.018019 +Derivation param2 on indt «rtree» 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»)]]] + C1 = const «C1» + GR1 = const «c12» + GR2 = const «c1t» + GR3 = const «c1f» +Derivation param2 on indt «rtree» took 0.022957 +Derivation tag on indt «rtree» +fun x : C1 => x : C2 + : C1 -> C2 +fun (x : C1) (_ : x) => true + : forall x : C1, x -> bool +fun x : C1 => x 3 + : C1 -> nat +Derivation tag on indt «rtree» took 0.005141 +Derivation eqType_ast on indt «rtree» +Derivation eqType_ast on indt «rtree» took 0.001956 +Derivation lens_laws on indt «rtree» +Derivation lens_laws on indt «rtree» took 0.001241 +Derivation param1_congr on indt «rtree» +Derivation param1_congr on indt «rtree» took 0.007829 +Derivation param1_inhab on indt «rtree» +Derivation param1_inhab on indt «rtree» took 0.007722 +Derivation param1_functor on indt «rtree» +COQC tests/test_tag.v +Derivation param1_functor on indt «rtree» took 0.007905 +Derivation fields on indt «rtree» +Derivation fields on indt «rtree» took 0.018324 +Derivation param1_trivial on indt «rtree» 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»)], + app [global (indt «eq»), global (indt «nat»), c0, c0], 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 + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, c0]] + _uvk_164_ = X0 + _uvk_165_ = X1 +Query assignments: + X = «elpi.tests.test_API.1» 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 + {elpi.tests.test_API.1} |= ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -7818,13 +6988,114 @@ WEAK CONSTRAINTS: +Derivation param1_trivial on indt «rtree» took 0.172236 +Derivation induction on indt «rtree» +Derivation induction on indt «rtree» took 0.006297 +Derivation eqb on indt «rtree» +Derivation eqb on indt «rtree» took 0.021659 +Derivation eqbcorrect on indt «rtree» +Derivation eqbcorrect on indt «rtree» took 0.078100 +Derivation eqbOK on indt «rtree» +Derivation eqbOK on indt «rtree» took 0.004813 +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 +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.011385 +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-92: +Warning: Global name tag is taken, using tag1 instead +[elpi.renamed,elpi,default] +Derivation tag on indt «Box» took 0.004046 +Derivation eqType_ast on indt «Box» +Derivation eqType_ast on indt «Box» took 0.001760 +Derivation lens_laws on indt «Box» +Derivation lens_laws on indt «Box» took 0.023734 +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.010899 +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.011792 +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 +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 314, column 10, character 6765:), + attribute elpi.phase (leaf-str interp)] +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.005658 +Derivation lens on indt «a» +Derivation lens on indt «a» failed, continuing +Derivation param1 on indt «a» +Derivation param1 on indt «a» took 0.011866 +Derivation param2 on indt «a» +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: - X = typ «elpi.tests.test_API.2» - Y = typ «elpi.tests.test_API.3» + 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_API.3 elpi.tests.test_API.2} |= - elpi.tests.test_API.2 <= elpi.tests.test_API.3 + {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -7834,22 +7105,22 @@ 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]) +Derivation param2 on indt «a» took 0.012176 +Derivation tag on indt «a» +Derivation tag on indt «a» took 0.003342 +Derivation eqType_ast on indt «a» +Derivation eqType_ast on indt «a» took 0.001933 +Derivation lens_laws on indt «a» +Derivation lens_laws on indt «a» took 0.001616 +Derivation param1_congr on indt «a» +Derivation param1_congr on indt «a» took 0.002837 +Derivation param1_inhab on indt «a» +Derivation param1_inhab on indt «a» took 0.005640 +Derivation param1_functor on indt «a» +Derivation param1_functor on indt «a» took 0.005269 +Derivation fields on indt «a» +Derivation fields on indt «a» took 0.008997 +Derivation param1_trivial on indt «a» Query assignments: D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ parameter a explicit c0 c1 \ @@ -7922,29 +7193,120 @@ WEAK CONSTRAINTS: +Derivation param1_trivial on indt «a» took 0.005759 +Derivation induction on indt «a» +Derivation induction on indt «a» took 0.004195 +Derivation eqb on indt «a» +Derivation eqb on indt «a» took 0.008134 +Derivation eqbcorrect on indt «a» +Derivation eqbcorrect on indt «a» took 0.012510 +Derivation eqbOK on indt «a» +Derivation eqbOK on indt «a» took 0.003424 +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.011830 +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.004286 +Derivation eqType_ast on indt «b» +Derivation eqType_ast on indt «b» took 0.001936 +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.006184 +Derivation param1_functor on indt «b» +Derivation param1_functor on indt «b» took 0.006392 +Derivation fields on indt «b» +Derivation fields on indt «b» took 0.009676 +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.004747 +Derivation eqb on indt «b» +Derivation eqb on indt «b» took 0.043838 +Derivation eqbcorrect on indt «b» +Derivation eqbcorrect on indt «b» took 0.013551 +Derivation eqbOK on indt «b» +Derivation eqbOK on indt «b» took 0.003566 +COQC tests/test_eqType_ast.v +a_eqb + : a -> a -> bool +b_eqb + : b -> b -> bool +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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +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»))] +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Succ p + = false + : bool +peano_eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (peano_eqb 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} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.24 + elpi.tests.test_HOAS.23 +SORTS: + +WEAK CONSTRAINTS: + + Query assignments: R = app [global (indc «ex_intro»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ + 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_211_ = X0 - _uvk_212_ = c0 \ + _uvk_174_ = X0 + _uvk_175_ = c0 \ X1 c0 - _uvk_213_ = X2 - _uvk_214_ = X3 + _uvk_176_ = X2 + _uvk_177_ = X3 Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.62 elpi.tests.test_elaborator.61 - elpi.tests.test_elaborator.60 elpi.tests.test_elaborator.59} |= - Set <= elpi.tests.test_elaborator.59 - elpi.tests.test_elaborator.59 <= elpi.tests.test_elaborator.61 - elpi.tests.test_elaborator.60 <= elpi.tests.test_elaborator.61 - elpi.tests.test_elaborator.61 <= elpi.tests.test_elaborator.62 + {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: {} FLEXIBLE UNIVERSES: @@ -7954,291 +7316,223 @@ WEAK CONSTRAINTS: -derive.param1_trivial: wrong shape is_nest -. It does not look like a unary parametricity translation of an inductive with no indexes. -Query assignments: - Y = global (indc «is_O») -x1 - : nat -w - : nat +Entry binder_constr is +[ LEFTA + [ "exists2"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; ","; term LEVEL + "200"; "&"; term LEVEL "200" + | "exists2"; "'"; pattern LEVEL "0"; ","; term LEVEL "200"; "&"; term LEVEL + "200" + | "exists2"; name; ":"; term LEVEL "200"; ","; term LEVEL "200"; "&"; term + LEVEL "200" + | "exists2"; name; ","; term LEVEL "200"; "&"; term LEVEL "200" + | "exists"; "!"; open_binders; ","; term LEVEL "200" + | "exists"; open_binders; ","; term LEVEL "200" + | "forall"; open_binders; ","; term LEVEL "200" + | "fun"; open_binders; "=>"; term LEVEL "200" + | "let"; "fix"; fix_decl; "in"; term LEVEL "200" + | "let"; "cofix"; cofix_body; "in"; term LEVEL "200" + | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; "in"; term LEVEL + "200" + | "let"; "'"; pattern LEVEL "200"; ":="; term LEVEL "200"; case_type; "in"; + term LEVEL "200" + | "let"; "'"; pattern LEVEL "200"; "in"; pattern LEVEL "200"; ":="; term + LEVEL "200"; case_type; "in"; term LEVEL "200" + | "let"; name; binders; let_type_cstr; ":="; term LEVEL "200"; "in"; term + LEVEL "200" + | "let"; [ "("; LIST0 name SEP ","; ")" | "()" ]; as_return_type; ":="; + term LEVEL "200"; "in"; term LEVEL "200" + | "if"; term LEVEL "200"; as_return_type; "then"; term LEVEL "200"; "else"; + term LEVEL "200" + | "fix"; fix_decls + | "cofix"; cofix_decls ] ] + +Entry constr is +[ LEFTA + [ "@"; global; univ_annot + | term LEVEL "8" ] ] + +Entry lconstr is +[ LEFTA + [ term LEVEL "200" ] ] + +Entry term is +[ "200" RIGHTA + [ ] +| "100" RIGHTA + [ SELF; "<:"; term LEVEL "200" + | SELF; "<<:"; term LEVEL "200" + | SELF; ":>"; term LEVEL "200" + | SELF; ":"; term LEVEL "200" ] +| "99" RIGHTA + [ SELF; "->"; term LEVEL "200" ] +| "95" RIGHTA + [ SELF; "<->"; NEXT ] +| "90" RIGHTA + [ ] +| "85" RIGHTA + [ SELF; "\\/"; term LEVEL "85" ] +| "80" RIGHTA + [ SELF; "/\\"; term LEVEL "80" ] +| "75" RIGHTA + [ "~"; term LEVEL "75" ] +| "70" RIGHTA + [ SELF; ">"; NEXT + | SELF; ">="; NEXT + | SELF; "<"; NEXT; "<="; NEXT + | SELF; "<"; NEXT; "<"; NEXT + | SELF; "<"; NEXT + | SELF; "<="; NEXT; "<"; NEXT + | SELF; "<="; NEXT; "<="; NEXT + | SELF; "<="; NEXT + | SELF; "<>"; NEXT; ":>"; NEXT + | SELF; "<>"; NEXT + | SELF; "="; NEXT; "="; NEXT + | SELF; "="; NEXT; ":>"; NEXT + | SELF; "="; NEXT ] +| "60" RIGHTA + [ SELF; "++"; term LEVEL "60" + | SELF; "::"; term LEVEL "60" ] +| "50" LEFTA + [ SELF; "||"; NEXT + | SELF; "-"; NEXT + | SELF; "+"; NEXT ] +| "40" LEFTA + [ SELF; "&&"; NEXT + | SELF; "/"; NEXT + | SELF; "*"; NEXT ] +| "35" RIGHTA + [ "/"; term LEVEL "35" + | "-"; term LEVEL "35" ] +| "30" RIGHTA + [ SELF; "^"; term LEVEL "30" ] +| LEFTA + [ IDENT "XX"; FIELD "xxx"; LIST0 arg ] +| "10" LEFTA + [ SELF; LIST1 arg + | "@"; global; univ_annot; LIST0 NEXT + | "@"; pattern_ident; LIST1 identref + | binder_constr ] +| "9" LEFTA + [ ".."; term LEVEL "0"; ".." ] +| "8" LEFTA + [ ] +| "1" LEFTA + [ SELF; ".("; "@"; global; univ_annot; LIST0 (term LEVEL "9"); ")" + | SELF; ".("; global; univ_annot; LIST0 arg; ")" + | SELF; "%"; IDENT + | SELF; "%_"; IDENT ] +| "0" LEFTA + [ "lib"; ":"; "@"; qualified_name + | "lib"; ":"; qualified_name + | QUOTATION "lp:" + | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "&"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; "&"; term LEVEL "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL + "200"; "&"; term LEVEL "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "&"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL + "200"; "&"; term LEVEL "200"; "}" + | "{"; "'"; pattern LEVEL "0"; ":"; term LEVEL "200"; "|"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "&"; term LEVEL + "200"; "}" + | "{"; "'"; pattern LEVEL "0"; "|"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "&"; + term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "&"; + term LEVEL "200"; "}" + | "{"; term LEVEL "99"; ":"; term LEVEL "200"; "|"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "&"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "|"; term LEVEL "200"; "}" + | "{"; term LEVEL "99"; "}" + | IDENT "ltac"; ":"; "("; ltac_expr; ")" + | "("; term LEVEL "200"; ","; term LEVEL "200"; ","; LIST1 (term LEVEL + "200") SEP ","; ")" + | "("; term LEVEL "200"; ","; term LEVEL "200"; ")" + | "("; term LEVEL "200"; ")" + | "{|"; record_declaration; '|}' + | "`{"; term LEVEL "200"; "}" + | "`("; term LEVEL "200"; ")" + | NUMBER + | atomic_constr + | term_match + | ident; fields; univ_annot + | ident; univ_annot + | string + | test_array_opening; "["; "|"; array_elems; "|"; lconstr; type_cstr; + test_array_closing; "|"; "]"; univ_annot ] ] + +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 325, column 12, character 7018:), + attribute elpi.phase (leaf-str interp)] +skip int 1 +skip str 33 +skip trm (global (indt «bool»)) +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 325, column 12, character 7018:), + attribute elpi.phase (leaf-str interp)] +skip int 1 +skip str 33 +skip trm (global (indt «bool»)) +nat -> bool -> True + : Prop +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 334, column 12, character 7204:), + attribute elpi.phase (leaf-str interp)] +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 334, column 12, character 7204:), + attribute elpi.phase (leaf-str interp)] +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 338, column 30, character 7305:), + attribute elpi.phase (leaf-str interp)] +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 338, column 30, character 7305:), + attribute elpi.phase (leaf-str interp)] +[attribute elpi.loc + (leaf-loc File "./tests/test_tactic.v", line 346, column 7, character 7481:), + attribute elpi.phase (leaf-str interp)] +[attribute elpi.loc + (leaf-loc File "./tests/test_tactic.v", line 346, column 7, character 7481:), + attribute elpi.phase (leaf-str interp)] +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: - X = typ «elpi.tests.test_API.4» - Y = typ «elpi.tests.test_API.5» + 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_API.5 elpi.tests.test_API.4} |= - elpi.tests.test_API.4 <= elpi.tests.test_API.5 + {elpi.tests.test_HOAS.29} |= + Set <= elpi.tests.test_HOAS.29 + Set = elpi.tests.test_HOAS.29 ALGEBRAIC UNIVERSES: - {} + {elpi.tests.test_HOAS.29} FLEXIBLE UNIVERSES: - + elpi.tests.test_HOAS.29 := Set SORTS: WEAK CONSTRAINTS: -derive.param1_trivial: wrong shape is_vect A PA -. It does not look like a unary parametricity translation of an inductive with no indexes. Query assignments: - A = tt - B = 0 - C = 0 - D = sort (typ «Set») - E = [«true», «false»] - F = [global (indt «bool»), global (indt «bool»)] - GR = «bool» -empty_fields_t : positive -> Type - : positive -> Type -empty_fields : forall n : empty, empty_fields_t (empty_tag n) - : forall n : empty, empty_fields_t (empty_tag n) -empty_construct -: -forall p : positive, empty_fields_t p -> Datatypes.option empty - : forall p : positive, empty_fields_t p -> Datatypes.option empty -empty_constructP -: -forall n : empty, -empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n - : forall n : empty, - empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n -unit_fields_t : positive -> Type - : positive -> Type -unit_fields : forall n : unit, unit_fields_t (unit_tag n) - : forall n : unit, unit_fields_t (unit_tag n) -unit_construct -: -forall p : positive, unit_fields_t p -> Datatypes.option unit - : forall p : positive, unit_fields_t p -> Datatypes.option unit -unit_constructP -: -forall n : unit, -unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n - : forall n : unit, - unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n -peano_fields_t : positive -> Type - : positive -> Type -peano_fields : forall n : peano, peano_fields_t (peano_tag n) - : forall n : peano, peano_fields_t (peano_tag n) -peano_construct -: -forall p : positive, peano_fields_t p -> Datatypes.option peano - : forall p : positive, peano_fields_t p -> Datatypes.option peano -peano_constructP -: -forall n : peano, -peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n - : forall n : peano, - peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n -option_fields_t : Type -> positive -> Type - : Type -> positive -> Type -option_fields -: -forall (A : Type) (l : option A), option_fields_t A (option_tag A l) - : forall (A : Type) (l : option A), option_fields_t A (option_tag A l) -option_construct -: -forall (A : Type) (p : positive), -option_fields_t A p -> Datatypes.option (option A) - : forall (A : Type) (p : positive), - option_fields_t A p -> Datatypes.option (option A) -option_constructP -: -forall (A : Type) (l : option A), -option_construct A (option_tag A l) (option_fields A l) = Datatypes.Some l - : forall (A : Type) (l : option A), - option_construct A (option_tag A l) (option_fields A l) = - Datatypes.Some l -pair_fields_t : Type -> Type -> positive -> Type - : Type -> Type -> positive -> Type -pair_fields -: -forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) - : forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) -pair_construct -: -forall (A B : Type) (p : positive), -pair_fields_t A B p -> Datatypes.option (pair A B) - : forall (A B : Type) (p : positive), - pair_fields_t A B p -> Datatypes.option (pair A B) -pair_constructP -: -forall (A B : Type) (l : pair A B), -pair_construct A B (pair_tag A B l) (pair_fields A B l) = Datatypes.Some l - : forall (A B : Type) (l : pair A B), - pair_construct A B (pair_tag A B l) (pair_fields A B l) = - Datatypes.Some l -seq_fields_t : Type -> positive -> Type - : Type -> positive -> Type -seq_fields : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) - : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) -seq_construct -: -forall (A : Type) (p : positive), -seq_fields_t A p -> Datatypes.option (seq A) - : forall (A : Type) (p : positive), - seq_fields_t A p -> Datatypes.option (seq A) -seq_constructP -: -forall (A : Type) (l : seq A), -seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l - : forall (A : Type) (l : seq A), - seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l -rose_fields_t : Type -> positive -> Type - : Type -> positive -> Type -rose_fields : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) - : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) -rose_construct -: -forall (A : Type) (p : positive), -rose_fields_t A p -> Datatypes.option (rose A) - : forall (A : Type) (p : positive), - rose_fields_t A p -> Datatypes.option (rose A) -rose_constructP -: -forall (A : Type) (l : rose A), -rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l - : forall (A : Type) (l : rose A), - rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l -beta_fields_t : Type -> positive -> Type - : Type -> positive -> Type -beta_fields : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) - : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) -beta_construct -: -forall (A : Type) (p : positive), -beta_fields_t A p -> Datatypes.option (beta A) - : forall (A : Type) (p : positive), - beta_fields_t A p -> Datatypes.option (beta A) -beta_constructP -: -forall (A : Type) (l : beta A), -beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l - : forall (A : Type) (l : beta A), - beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l -large_fields_t : positive -> Type - : positive -> Type -large_fields : forall n : large, large_fields_t (large_tag n) - : forall n : large, large_fields_t (large_tag n) -large_construct -: -forall p : positive, large_fields_t p -> Datatypes.option large - : forall p : positive, large_fields_t p -> Datatypes.option large -large_constructP -: -forall n : large, -large_construct (large_tag n) (large_fields n) = Datatypes.Some n - : forall n : large, - large_construct (large_tag n) (large_fields n) = Datatypes.Some n -prim_int_fields_t : positive -> Type - : positive -> Type -prim_int_fields : forall n : prim_int, prim_int_fields_t (prim_int_tag n) - : forall n : prim_int, prim_int_fields_t (prim_int_tag n) -prim_int_construct -: -forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int - : forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int -prim_int_constructP -: -forall n : prim_int, -prim_int_construct (prim_int_tag n) (prim_int_fields n) = Datatypes.Some n - : forall n : prim_int, - prim_int_construct (prim_int_tag n) (prim_int_fields n) = - Datatypes.Some n -pa_record_fields_t : Type -> positive -> Type - : Type -> positive -> Type -pa_record_fields -: -forall (A : Type) (l : pa_record A), pa_record_fields_t A (pa_record_tag A l) - : forall (A : Type) (l : pa_record A), - pa_record_fields_t A (pa_record_tag A l) -pa_record_construct -: -forall (A : Type) (p : positive), -pa_record_fields_t A p -> Datatypes.option (pa_record A) - : forall (A : Type) (p : positive), - pa_record_fields_t A p -> Datatypes.option (pa_record A) -pa_record_constructP -: -forall (A : Type) (l : pa_record A), -pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = -Datatypes.Some l - : forall (A : Type) (l : pa_record A), - pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = - Datatypes.Some l -pr_record_fields_t : Type -> positive -> Type - : Type -> positive -> Type -pr_record_fields -: -forall (A : Type) (l : pr_record A), pr_record_fields_t A (pr_record_tag A l) - : forall (A : Type) (l : pr_record A), - pr_record_fields_t A (pr_record_tag A l) -pr_record_construct -: -forall (A : Type) (p : positive), -pr_record_fields_t A p -> Datatypes.option (pr_record A) - : forall (A : Type) (p : positive), - pr_record_fields_t A p -> Datatypes.option (pr_record A) -pr_record_constructP -: -forall (A : Type) (l : pr_record A), -pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = -Datatypes.Some l - : forall (A : Type) (l : pr_record A), - pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = - Datatypes.Some l -sigma_bool_fields_t : positive -> Type - : positive -> Type -sigma_bool_fields -: -forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) - : forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) -sigma_bool_construct -: -forall p : positive, sigma_bool_fields_t p -> Datatypes.option sigma_bool - : forall p : positive, - sigma_bool_fields_t p -> Datatypes.option sigma_bool -sigma_bool_constructP -: -forall l : sigma_bool, -sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = -Datatypes.Some l - : forall l : sigma_bool, - sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = - Datatypes.Some l -ord_fields_t : peano -> positive -> Type - : peano -> positive -> Type -ord_fields : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) - : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) -ord_construct -: -forall (n : peano) (p : positive), -ord_fields_t n p -> Datatypes.option (ord n) - : forall (n : peano) (p : positive), - ord_fields_t n p -> Datatypes.option (ord n) -ord_constructP -: -forall (p : peano) (o : ord p), -ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o - : forall (p : peano) (o : ord p), - ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o -ord2_fields_t : peano -> positive -> Type - : peano -> positive -> Type -ord2_fields : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) - : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) -ord2_construct -: -forall (n : peano) (p : positive), -ord2_fields_t n p -> Datatypes.option (ord2 n) - : forall (n : peano) (p : positive), - ord2_fields_t n p -> Datatypes.option (ord2 n) -Query assignments: -ord2_constructP -: -forall (p : peano) (o : ord2 p), -ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o - : forall (p : peano) (o : ord2 p), - ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ parameter a explicit c0 c1 \ inductive ind1 tt @@ -8310,280 +7604,32 @@ WEAK CONSTRAINTS: -val_fields_t : positive -> Type - : positive -> Type -val_fields : forall i : val, val_fields_t (val_tag i) - : forall i : val, val_fields_t (val_tag i) -val_construct : forall p : positive, val_fields_t p -> Datatypes.option val - : forall p : positive, val_fields_t p -> Datatypes.option val -val_constructP -: -forall v : val, val_construct (val_tag v) (val_fields v) = Datatypes.Some v - : forall v : val, - val_construct (val_tag v) (val_fields v) = Datatypes.Some v -COQC tests/test_eqb.v -Query assignments: - Y = app - [global (indc «is_S»), app [global (indc «S»), global (indc «O»)], - app [global (indc «is_S»), global (indc «O»), global (indc «is_O»)]] -is_pred = -fun (n : nat) (Pn : is_nat n) => -match - Pn in (is_nat n0) return (is_nat match n0 with - | 0 => n - | S u => u - end) -with -| is_O => Pn -| is_S _ Pu => Pu -end - : forall n : nat, is_nat n -> is_nat (Nat.pred n) - -Arguments is_pred n%nat_scope Pn -is_pred : is_nat2nat Nat.pred - : is_nat2nat Nat.pred -is_predn : is_nat2nat predn - : is_nat2nat predn -is_add : is_nat2nat2nat Nat.add - : is_nat2nat2nat Nat.add -Query assignments: - X = typ «elpi.tests.test_API.6» - Y = typ «elpi.tests.test_API.7» - Z = typ «elpi.tests.test_API.8» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API.8 elpi.tests.test_API.7 elpi.tests.test_API.6} |= - elpi.tests.test_API.6 <= elpi.tests.test_API.8 - elpi.tests.test_API.7 <= elpi.tests.test_API.8 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - +Inductive peano : Set := Zero : peano | Succ : peano -> peano. -Inductive is_bla : forall H : nat, is_nat H -> bla H -> Type := - is_Bla : forall H : nat, is_nat H -> is_bla 0 is_O (Bla H) - | is_Blu : forall (n : nat) (Pn : is_nat n) (H : bla n), - is_bla n Pn H -> is_bla 1 (is_S 0 is_O) (Blu n H). +Arguments peano.Succ p + = false + : bool +peano.eqb_OK : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) -Arguments is_bla _%nat_scope P_ s1 -Arguments is_Bla _%nat_scope P_ -Arguments is_Blu n%nat_scope Pn _ P_ -Query assignments: - F = app [global (const «nat_of_bool»), global (indc «true»)] -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: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - +peano.eqb_OK is not universe polymorphic +Arguments peano.eqb_OK x1 x2 +peano.eqb_OK is opaque +Expands to: Constant elpi.apps.derive.examples.readme.peano.eqb_OK +Notation peano := peano.peano +Inductive peano : Set := Zero : peano | Succ : peano -> peano. +Arguments peano.Succ p + = false + : bool +peano.eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) 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» -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 -Query assignments: - PDb = [tc-instance (const «reali_is_bla_Blu») (tc-priority-given 0), - tc-instance (const «reali_is_bla_Bla») (tc-priority-given 0), - tc-instance (const «reali_is_bla») (tc-priority-given 0), - tc-instance (const «reali_is_weirdn») (tc-priority-given 0), - tc-instance (const «reali_is_quasidn») (tc-priority-given 0), - tc-instance (const «reali_is_predn») (tc-priority-given 0), - tc-instance (const «reali_is_pred») (tc-priority-given 0), - tc-instance (const «reali_is_nat2nat2nat») (tc-priority-given 0), - tc-instance (const «reali_is_nat2nat») (tc-priority-given 0), - tc-instance (const «reali_is_vec_length_rec») (tc-priority-given 0), - tc-instance (const «reali_is_vec_length_type») (tc-priority-given 0), - tc-instance (const «reali_is_test») (tc-priority-given 0), - tc-instance (const «reali_is_div») (tc-priority-given 0), - tc-instance (const «reali_is_divmod») (tc-priority-given 0), - tc-instance (const «reali_is_bool_false») (tc-priority-given 0), - tc-instance (const «reali_is_bool_true») (tc-priority-given 0), - tc-instance (const «reali_is_bool») (tc-priority-given 0), - tc-instance (const «reali_is_snd») (tc-priority-given 0), - tc-instance (const «reali_is_fst») (tc-priority-given 0), - tc-instance (const «reali_is_prod_pair») (tc-priority-given 0), - tc-instance (const «reali_is_prod») (tc-priority-given 0), - tc-instance (const «reali_is_add») (tc-priority-given 0), - tc-instance (const «reali_is_plus'») (tc-priority-given 0), - tc-instance (const «reali_is_eq_eq_refl») (tc-priority-given 0), - tc-instance (const «reali_is_eq») (tc-priority-given 0), - tc-instance (const «reali_is_is_list_is_cons») (tc-priority-given 0), - tc-instance (const «reali_is_is_list_is_nil») (tc-priority-given 0), - tc-instance (const «reali_is_is_list») (tc-priority-given 0), - tc-instance (const «reali_is_list_cons») (tc-priority-given 0), - tc-instance (const «reali_is_list_nil») (tc-priority-given 0), - tc-instance (const «reali_is_list») (tc-priority-given 0), - tc-instance (const «reali_is_vec_length») (tc-priority-given 0), - tc-instance (const «reali_is_vec_vcons») (tc-priority-given 0), - tc-instance (const «reali_is_vec_vnil») (tc-priority-given 0), - tc-instance (const «reali_is_vec») (tc-priority-given 0), - tc-instance (const «reali_is_fin_length») (tc-priority-given 0), - tc-instance (const «reali_is_fin_FS») (tc-priority-given 0), - tc-instance (const «reali_is_fin_FO») (tc-priority-given 0), - tc-instance (const «reali_is_fin») (tc-priority-given 0), - tc-instance (const «reali_is_nat_S») (tc-priority-given 0), - tc-instance (const «reali_is_nat_O») (tc-priority-given 0), - tc-instance (const «reali_is_nat») (tc-priority-given 0), - tc-instance (const «reali_is_unit_tt») (tc-priority-given 0), - tc-instance (const «reali_is_unit») (tc-priority-given 0), - tc-instance (const «reali_is_val_V») (tc-priority-given 0), - tc-instance (const «reali_is_val») (tc-priority-given 0), - tc-instance (const «reali_is_ord2_mkOrd2») (tc-priority-given 0), - tc-instance (const «reali_is_ord2») (tc-priority-given 0), - tc-instance (const «reali_is_ord_mkOrd») (tc-priority-given 0), - tc-instance (const «reali_is_ord») (tc-priority-given 0), - tc-instance (const «reali_is_is_leq») (tc-priority-given 0), - tc-instance (const «reali_is_sigma_bool_Build_sigma_bool») - (tc-priority-given 0), - tc-instance (const «reali_is_sigma_bool») (tc-priority-given 0), - tc-instance (const «reali_is_is_zero») (tc-priority-given 0), - tc-instance (const «Coverage.reali_is_bool_false») (tc-priority-given 0), - tc-instance (const «Coverage.reali_is_bool_true») (tc-priority-given 0), - tc-instance (const «Coverage.reali_is_bool») (tc-priority-given 0), - tc-instance (const «reali_is_enum_E3») (tc-priority-given 0), - tc-instance (const «reali_is_enum_E2») (tc-priority-given 0), - tc-instance (const «reali_is_enum_E1») (tc-priority-given 0), - tc-instance (const «reali_is_enum») (tc-priority-given 0), - tc-instance (const «reali_is_dep_record_Build_dep_record») - (tc-priority-given 0), - tc-instance (const «reali_is_dep_record») (tc-priority-given 0), - tc-instance (const «reali_is_pr_record_Build_pr_record») - (tc-priority-given 0), - tc-instance (const «reali_is_pr_record») (tc-priority-given 0), - tc-instance (const «reali_is_pa_record_Build_pa_record») - (tc-priority-given 0), - tc-instance (const «reali_is_pa_record») (tc-priority-given 0), - tc-instance (const «reali_is_fo_record_Build_fo_record») - (tc-priority-given 0), - tc-instance (const «reali_is_fo_record») (tc-priority-given 0), - tc-instance (const «reali_is_prim_float_PF») (tc-priority-given 0), - tc-instance (const «reali_is_prim_float») (tc-priority-given 0), - tc-instance (const «reali_is_prim_int_PI») (tc-priority-given 0), - tc-instance (const «reali_is_prim_int») (tc-priority-given 0), - tc-instance (const «reali_is_large_K26») (tc-priority-given 0), - tc-instance (const «reali_is_large_K25») (tc-priority-given 0), - tc-instance (const «reali_is_large_K24») (tc-priority-given 0), - tc-instance (const «reali_is_large_K23») (tc-priority-given 0), - tc-instance (const «reali_is_large_K22») (tc-priority-given 0), - tc-instance (const «reali_is_large_K21») (tc-priority-given 0), - tc-instance (const «reali_is_large_K20») (tc-priority-given 0), - tc-instance (const «reali_is_large_K19») (tc-priority-given 0), - tc-instance (const «reali_is_large_K18») (tc-priority-given 0), - tc-instance (const «reali_is_large_K17») (tc-priority-given 0), - tc-instance (const «reali_is_large_K16») (tc-priority-given 0), - tc-instance (const «reali_is_large_K15») (tc-priority-given 0), - tc-instance (const «reali_is_large_K14») (tc-priority-given 0), - tc-instance (const «reali_is_large_K13») (tc-priority-given 0), - tc-instance (const «reali_is_large_K12») (tc-priority-given 0), - tc-instance (const «reali_is_large_K11») (tc-priority-given 0), - tc-instance (const «reali_is_large_K10») (tc-priority-given 0), - tc-instance (const «reali_is_large_K9») (tc-priority-given 0), - tc-instance (const «reali_is_large_K8») (tc-priority-given 0), - tc-instance (const «reali_is_large_K7») (tc-priority-given 0), - tc-instance (const «reali_is_large_K6») (tc-priority-given 0), - tc-instance (const «reali_is_large_K5») (tc-priority-given 0), - tc-instance (const «reali_is_large_K4») (tc-priority-given 0), - tc-instance (const «reali_is_large_K3») (tc-priority-given 0), - tc-instance (const «reali_is_large_K2») (tc-priority-given 0), - tc-instance (const «reali_is_large_K1») (tc-priority-given 0), - tc-instance (const «reali_is_large») (tc-priority-given 0), - tc-instance (const «reali_is_iota_Why») (tc-priority-given 0), - tc-instance (const «reali_is_iota») (tc-priority-given 0), - tc-instance (const «reali_is_beta_Redex») (tc-priority-given 0), - tc-instance (const «reali_is_beta») (tc-priority-given 0), - tc-instance (const «reali_is_zeta_Envelope») (tc-priority-given 0), - tc-instance (const «reali_is_zeta») (tc-priority-given 0), - tc-instance (const «reali_is_dyn_box») (tc-priority-given 0), - tc-instance (const «reali_is_dyn») (tc-priority-given 0), - tc-instance (const «reali_is_vect_VCons») (tc-priority-given 0), - tc-instance (const «reali_is_vect_VNil») (tc-priority-given 0), - tc-instance (const «reali_is_vect») (tc-priority-given 0), - tc-instance (const «reali_is_w_via») (tc-priority-given 0), - tc-instance (const «reali_is_w») (tc-priority-given 0), - tc-instance (const «reali_is_nest_ConsN») (tc-priority-given 0), - tc-instance (const «reali_is_nest_NilN») (tc-priority-given 0), - tc-instance (const «reali_is_nest») (tc-priority-given 0), - tc-instance (const «reali_is_rose_o_Nodeo») (tc-priority-given 0), - tc-instance (const «reali_is_rose_o_Leafo») (tc-priority-given 0), - tc-instance (const «reali_is_rose_o») (tc-priority-given 0), - tc-instance (const «reali_is_rose_p_Nodep») (tc-priority-given 0), - tc-instance (const «reali_is_rose_p_Leafp») (tc-priority-given 0), - tc-instance (const «reali_is_rose_p») (tc-priority-given 0), - tc-instance (const «reali_is_rose_Node») (tc-priority-given 0), - tc-instance (const «reali_is_rose_Leaf») (tc-priority-given 0), - tc-instance (const «reali_is_rose») (tc-priority-given 0), - tc-instance (const «reali_is_box_peano_Box») (tc-priority-given 0), - tc-instance (const «reali_is_box_peano») (tc-priority-given 0), - tc-instance (const «reali_is_seq_Cons») (tc-priority-given 0), - tc-instance (const «reali_is_seq_Nil») (tc-priority-given 0), - tc-instance (const «reali_is_seq») (tc-priority-given 0), - tc-instance (const «reali_is_pair_Comma») (tc-priority-given 0), - tc-instance (const «reali_is_pair») (tc-priority-given 0), - tc-instance (const «reali_is_option_Some») (tc-priority-given 0), - tc-instance (const «reali_is_option_None») (tc-priority-given 0), - tc-instance (const «reali_is_option») (tc-priority-given 0), - tc-instance (const «reali_is_peano_Succ») (tc-priority-given 0), - tc-instance (const «reali_is_peano_Zero») (tc-priority-given 0), - tc-instance (const «reali_is_peano») (tc-priority-given 0), - tc-instance (const «Coverage.reali_is_unit_tt») (tc-priority-given 0), - tc-instance (const «Coverage.reali_is_unit») (tc-priority-given 0), - tc-instance (const «reali_is_empty») (tc-priority-given 0), - tc-instance (const «exports.reali_is_eq_eq_refl») (tc-priority-given 0), - tc-instance (const «exports.reali_is_eq») (tc-priority-given 0)] - Spilled_1 = indt «reali_db» -File "./tests/test_param1.v", line 158, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -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 + X = typ «elpi.tests.test_API.4» + Y = typ «elpi.tests.test_API.5» Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= + {elpi.tests.test_API.5 elpi.tests.test_API.4} |= + elpi.tests.test_API.4 <= elpi.tests.test_API.5 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -8593,269 +7639,19 @@ WEAK CONSTRAINTS: +Derivation param1 on const «Nat.add» 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» -Query assignments: - Res = app - [global (const «Z_of_nat»), - app [global (const «nat_of_bool»), global (indc «true»)]] -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} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.24 - elpi.tests.test_HOAS.23 -SORTS: - -WEAK CONSTRAINTS: - - -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) -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 -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 -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} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.29 := Set -SORTS: - -WEAK CONSTRAINTS: - - -{{ nat; S; }} -{{ nat; S; }} -Query assignments: - GR = const «Nat.add» - L = {{ nat; S; }} - S = {{ nat; S; }} -COQC tests/test_bcongr.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 -empty_eqb : eq_test2 empty empty - : eq_test2 empty empty -COQC tests/test_param1_congr.v -unit_eqb : eq_test2 unit unit - : eq_test2 unit unit -peano_eqb : eq_test2 peano peano - : eq_test2 peano peano -option_eqb : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) - : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) -pair_eqb -: -forall A : Type, -eq_test2 A A -> -forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) - : forall A : Type, - eq_test2 A A -> - forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) -seq_eqb : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) - : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) -rose_eqb : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) - : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) -beta_eqb : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) - : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) -prim_int_eqb : eq_test2 prim_int prim_int - : eq_test2 prim_int prim_int -fo_record_eqb : eq_test2 fo_record fo_record - : eq_test2 fo_record fo_record -pa_record_eqb -: -forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) - : forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) -pr_record_eqb -: -forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) - : forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) -enum_eqb : eq_test2 enum enum - : eq_test2 enum enum -sigma_bool_eqb : eq_test2 sigma_bool sigma_bool - : eq_test2 sigma_bool sigma_bool -ord_eqb : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) - : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) -ord2_eqb : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) - : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) -val_eqb : eq_test2 val val - : eq_test2 val val -alias_eqb : eq_test2 alias alias - : eq_test2 alias alias -Query assignments: - R = prod `r` (global (const «ring»)) c0 \ - prod `x` (app [global (const «carr»), c0]) c1 \ - app [global (indt «eq»), app [global (const «carr»), c0], c1, c1] - T = sort (typ «elpi.tests.test_elaborator.75») - _uvk_310_ = c0 \ c1 \ -X0 c0 c1 -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.75 elpi.tests.test_elaborator.74 - elpi.tests.test_elaborator.73 elpi.tests.test_elaborator.72 - elpi.tests.test_elaborator.70} |= - ring.u0 <= elpi.tests.test_elaborator.70 - elpi.tests.test_elaborator.70 <= elpi.tests.test_elaborator.75 - elpi.tests.test_elaborator.73 <= elpi.tests.test_elaborator.74 - elpi.tests.test_elaborator.74 <= elpi.tests.test_elaborator.75 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - + 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 +Derivation param1 on const «Nat.add» took 0.258052 +Derivation param2 on const «Nat.add» +Derivation param2 on const «Nat.add» took 0.017757 +Derivation eqb-alias on const «Nat.add» Query assignments: A4 = «elpi.tests.test_HOAS.36» A5 = «elpi.tests.test_HOAS.37» @@ -8886,12 +7682,14 @@ match c1 (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c2 \ c0) [fun `t` c0 c2 \ c2]) +Derivation eqb-alias on const «Nat.add» failed, continuing 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]) +Derivation eqbcorrect-alias on const «Nat.add» 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 \ @@ -8930,6 +7728,7 @@ C6 = «elpi.tests.test_HOAS.63» D1 = «elpi.tests.test_HOAS.49» D2 = «elpi.tests.test_HOAS.50» +Derivation eqbcorrect-alias on const «Nat.add» failed, continuing D3 = «elpi.tests.test_HOAS.51» D4 = X0 E5 = «elpi.tests.test_HOAS.66» @@ -8946,6 +7745,7 @@ 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]] +Derivation eqbOK-alias on const «Nat.add» 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 \ @@ -8960,6 +7760,7 @@ 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] +Derivation eqbOK-alias on const «Nat.add» failed, continuing 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 \ @@ -9038,21 +7839,56 @@ WEAK CONSTRAINTS: -[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] -{{ X.a; }} {{ X.a; Nat.add; nat; }} -{{ X.a; }} {{ X.a; Nat.add; nat; O; S; }} +is_add + : forall n : nat, is_nat n -> forall m : nat, is_nat m -> is_nat (n + m) Query assignments: -[foo (indt «nat»), foo (indt «bool»)] - 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» -[] -[foo (indt «nat»)] -Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3246 <= Set + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] + _uvk_211_ = X0 + _uvk_212_ = c0 \ +X1 c0 + _uvk_213_ = X2 + _uvk_214_ = X3 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.62 elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.60 elpi.tests.test_elaborator.59} |= + Set <= elpi.tests.test_elaborator.59 + elpi.tests.test_elaborator.59 <= elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.60 <= elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.61 <= elpi.tests.test_elaborator.62 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +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»))] +Notation peano := Peano.peano +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Peano.Succ p + = false + : bool +Peano.eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (Peano.eqb x1 x2) «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 @@ -9090,135 +7926,192 @@ WEAK CONSTRAINTS: -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: + 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: + X = typ «elpi.tests.test_API.6» + Y = typ «elpi.tests.test_API.7» + Z = typ «elpi.tests.test_API.8» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.8 elpi.tests.test_API.7 elpi.tests.test_API.6} |= + elpi.tests.test_API.6 <= elpi.tests.test_API.8 + elpi.tests.test_API.7 <= elpi.tests.test_API.8 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Notation peano := Peano.peano +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Peano.Succ p +Module +Peano +:= Struct + Inductive peano : Set := + Zero : example4.peano | Succ : example4.peano -> example4.peano. + Definition peano_rect : + forall P : example4.peano -> Type, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition peano_ind : + forall P : example4.peano -> Prop, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition peano_rec : + forall P : example4.peano -> Set, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition peano_sind : + forall P : example4.peano -> SProp, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition Peano_map : example4.peano -> example4.peano. + Inductive is_peano : example4.peano -> Type := + is_Zero : is_peano example4.Zero + | is_Succ : forall p : example4.peano, + is_peano p -> is_peano (example4.Succ p). + Definition is_peano_rect : + forall P : forall s1 : example4.peano, is_peano s1 -> Type, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition is_peano_ind : + forall P : forall s1 : example4.peano, is_peano s1 -> Prop, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition is_peano_rec : + forall P : forall s1 : example4.peano, is_peano s1 -> Set, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition is_peano_sind : + forall P : forall s1 : example4.peano, is_peano s1 -> SProp, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition reali_is_peano : reali_db example4.peano is_peano. + Definition reali_is_peano_Zero : reali_db example4.Zero is_Zero. + Definition reali_is_peano_Succ : reali_db example4.Succ is_Succ. + Inductive peano_R : example4.peano -> example4.peano -> Set := + Zero_R : peano_R example4.Zero example4.Zero + | Succ_R : forall p p0 : example4.peano, + peano_R p p0 -> + peano_R (example4.Succ p) (example4.Succ p0). + Definition peano_R_rect : + forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Type, + P example4.Zero example4.Zero Zero_R -> + (forall (p p0 : example4.peano) (p1 : peano_R p p0), + P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> + forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. + Definition peano_R_ind : + forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Prop, + P example4.Zero example4.Zero Zero_R -> + (forall (p p0 : example4.peano) (p1 : peano_R p p0), + P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> + forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. + Definition peano_R_rec : + forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Set, + P example4.Zero example4.Zero Zero_R -> + (forall (p p0 : example4.peano) (p1 : peano_R p p0), + P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> + forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. + Definition peano_R_sind : + forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> SProp, + P example4.Zero example4.Zero Zero_R -> + (forall (p p0 : example4.peano) (p1 : peano_R p p0), + P p p0 p1 -> P (example4.Succ p) (example4.Succ p0) (Succ_R p p0 p1)) -> + forall (s1 s2 : example4.peano) (p : peano_R s1 s2), P s1 s2 p. + Definition param_peano_R : + param_db example4.peano example4.peano peano_R. + Definition param_Zero_R : param_db example4.Zero example4.Zero Zero_R. + Definition param_Succ_R : param_db example4.Succ example4.Succ Succ_R. + Definition Peano_tag : example4.peano -> BinNums.positive. + Definition congr_is_Zero : is_Zero = is_Zero. + Definition congr_is_Succ : + forall (x : example4.peano) (p1 p2 : is_peano x), + p1 = p2 -> is_Succ x p1 = is_Succ x p2. + Definition is_peano_inhab : forall x : example4.peano, is_peano x. + Definition is_peano_functor : + forall x : example4.peano, is_peano x -> is_peano x. + Record box_peano_Zero : Type := Box_peano_Zero { }. + Record box_peano_Succ : Type := Box_peano_Succ + { Box_peano_Succ_0 : example4.peano }. + Definition Box_peano_Succ_0 : box_peano_Succ -> example4.peano. + Definition Peano_fields_t : BinNums.positive -> Type. + Definition Peano_fields : + forall i : example4.peano, Peano_fields_t (Peano_tag i). + Definition Peano_construct : + forall p : BinNums.positive, Peano_fields_t p -> option example4.peano. + Parameter Peano_constructP : + forall i : example4.peano, + Peano_construct (Peano_tag i) (Peano_fields i) = Some i. + Definition is_peano_trivial : + forall x : example4.peano, + {u : is_peano x & forall v : is_peano x, u = v}. + Definition Peano_induction : + forall P : example4.peano -> Type, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall s1 : example4.peano, is_peano s1 -> P s1. + Definition Peano_eqb_fields : + (example4.peano -> example4.peano -> bool) -> + forall x : BinNums.positive, + Peano_fields_t x -> Peano_fields_t x -> bool. + Definition Peano_eqb : example4.peano -> example4.peano -> bool. + Parameter Peano_eqb_correct : + forall x : example4.peano, eqb_correct_on Peano_eqb x. + Parameter Peano_eqb_refl : + forall x : example4.peano, eqb_refl_on Peano_eqb x. + Parameter Peano_eqb_OK : + forall x1 x2 : example4.peano, reflect (x1 = x2) (Peano_eqb x1 x2). + End + + = false + : bool +Peano.Peano_eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (Peano.Peano_eqb x1 x2) +_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 «elpi.tests.test_HOAS.70» «elpi.tests.test_HOAS.71» Universe constraints: UNIVERSES: {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= @@ -9263,189 +8156,15 @@ WEAK CONSTRAINTS: -File "./tests/test_derive.v", line 33, characters 2-9: -Warning: This command does not support this attribute: verbose. -[unsupported-attributes,parsing,default] -is_empty_functor : func is_empty - : func is_empty -is_unit_functor : func is_unit - : func is_unit -is_peano_functor : func is_peano - : func is_peano -is_option_functor : func1 is_option - : func1 is_option -is_pair_functor : func2 is_pair - : func2 is_pair -is_seq_functor : func1 is_seq - : func1 is_seq -is_rose_functor : func1 is_rose - : func1 is_rose -is_vect_functor -: -forall (A : Type) (P Q : A -> Type), -(forall y : A, P y -> Q y) -> -forall (i : peano) (p : is_peano i) (v : vect A i), -is_vect A P i p v -> is_vect A Q i p v - : forall (A : Type) (P Q : A -> Type), - (forall y : A, P y -> Q y) -> - forall (i : peano) (p : is_peano i) (v : vect A i), - is_vect A P i p v -> is_vect A Q i p v -is_dyn_functor : func is_dyn - : func is_dyn -is_zeta_functor : func1 is_zeta - : func1 is_zeta -is_beta_functor : func1 is_beta - : func1 is_beta -is_iota_functor : func is_iota - : func is_iota -is_large_functor : func is_large - : func is_large -is_prim_int_functor : func is_prim_int - : func is_prim_int -is_prim_float_functor : func is_prim_float - : func is_prim_float -is_fo_record_functor : func is_fo_record - : func is_fo_record -is_pa_record_functor : func1 is_pa_record - : func1 is_pa_record -is_pr_record_functor : func1 is_pr_record - : func1 is_pr_record -is_enum_functor : func is_enum - : func is_enum -is_ord_functor : forall (n : peano) (pn : is_peano n), func (is_ord n pn) - : forall (n : peano) (pn : is_peano n), func (is_ord n pn) -is_ord2_functor : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) - : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) -is_val_functor : func is_val - : func is_val -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.004529 -Derivation isK on indt «nat» -Derivation isK on indt «nat» took 0.007118 -Derivation eq on indt «nat» -Derivation eq on indt «nat» took 0.007337 -Derivation invert on indt «nat» -COQC tests/test_induction.v -Derivation invert on indt «nat» took 0.009252 -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.009280 -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.010958 -Skipping derivation eqbcorrect on indt «nat» since it has been already run -Derivation eqcorrect on indt «nat» -Derivation eqcorrect on indt «nat» took 0.003917 -Skipping derivation eqbOK on indt «nat» since it has been already run -Derivation eqOK on indt «nat» -Derivation eqOK on indt «nat» took 0.003460 -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 -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 +COQC tests/test_lens_laws.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» «elpi.tests.test_HOAS.72» «» Universe constraints: UNIVERSES: {elpi.tests.test_HOAS.72} |= @@ -9488,95 +8207,102 @@ WEAK CONSTRAINTS: -Query assignments: - T = global (const «int») - X = primitive (uint63 99) -hello [int 1, int 2, trm (global (indt «nat»)), str x] -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 +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) (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, 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) (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) +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) +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Succ p +is_beta : forall A : Type, pred A -> pred (beta A) + : forall A : Type, pred A -> pred (beta A) +is_iota : pred iota + : pred iota + = false + : bool +is_large : pred large + : pred large +eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (eqb x1 x2) +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) +Query assignments: +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) + 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) +is_ord2 : forall p : peano, is_peano p -> pred (ord2 p) + : forall p : peano, is_peano p -> pred (ord2 p) + 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» +is_val : pred val + : pred val +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: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +x1 + : nat +w + : nat Query assignments: GRF = indt «F» I1 = «elpi.tests.test_HOAS.73» @@ -9595,84 +8321,157 @@ WEAK CONSTRAINTS: -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 +Inductive peano : Set := + Zero : Peano.peano | Succ : Peano.peano -> Peano.peano. + +Arguments Peano.Succ p + = false + : bool +Peano.eqb_OK + : forall x1 x2 : Peano.peano, reflect (x1 = x2) (Peano.eqb x1 x2) +Query assignments: + F = app [global (const «nat_of_bool»), global (indc «true»)] +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 +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 +empty_map : map empty + : map empty +prim_int_is_PI + : prim_int -> bool +prim_float_is_PF + : prim_float -> bool +unit_map : map unit + : map unit +peano_map : map peano + : map peano +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 +option_map : map1 option + : map1 option +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 +pair_map : -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 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 : 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 -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 ?e14@{x:=x0} then 3 else y +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 +{{ nat; S; }} +{{ nat; S; }} +Query assignments: + GR = const «Nat.add» + L = {{ nat; S; }} + S = {{ nat; S; }} 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: @@ -9699,10 +8498,44 @@ WEAK CONSTRAINTS: -COQC tests/test_API2.v -Query assignments: - T = global (const «float») - X = primitive (float64 993000) +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 Universe constraints: UNIVERSES: {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 @@ -9739,6 +8572,402 @@ 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» +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 +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= + elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.81} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.81 + elpi.tests.test_HOAS.80 + SORTS: + + WEAK CONSTRAINTS: + + +Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because +elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 +Query assignments: + E = Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because +elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.80» + I2 = «elpi.tests.test_HOAS.81» + L1 = «elpi.tests.test_HOAS.80» + L2 = «elpi.tests.test_HOAS.81» + U1 = «elpi.tests.test_HOAS.80» + U2 = «elpi.tests.test_HOAS.81» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= + elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.81} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.81 + elpi.tests.test_HOAS.80 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + Y = global (indc «is_O») +_f1_view_set : view_set _f1 + : view_set _f1 +_f2_view_set : view_set _f2 + : view_set _f2 +_f3_view_set : forall A : Type, view_set _f3 + : forall A : Type, view_set _f3 +_f4_view_set : forall A : Type, view_set _f4 + : forall A : Type, view_set _f4 +_pf3_view_set : forall A : Type, view_set _pf3 + : forall A : Type, view_set _pf3 +_pf4_view_set : forall A : Type, view_set _pf4 + : forall A : Type, view_set _pf4 +_f1_set_set : set_set _f1 + : set_set _f1 +_f2_set_set : set_set _f2 + : set_set _f2 +_f3_set_set : forall A : Type, set_set _f3 + : forall A : Type, set_set _f3 +_f4_set_set : forall A : Type, set_set _f4 + : forall A : Type, set_set _f4 +_pf3_set_set : forall A : Type, set_set _pf3 + : forall A : Type, set_set _pf3 +_pf4_set_set : forall A : Type, set_set _pf4 + : forall A : Type, set_set _pf4 +_f1_set_view : set_view _f1 + : set_view _f1 +_f2_set_view : set_view _f2 + : set_view _f2 +_f3_set_view : forall A : Type, set_view _f3 + : forall A : Type, set_view _f3 +_f4_set_view : forall A : Type, set_view _f4 + : forall A : Type, set_view _f4 +_pf3_set_view : forall A : Type, set_view _pf3 + : forall A : Type, set_view _pf3 +_pf4_set_view : forall A : Type, set_view _pf4 + : forall A : Type, set_view _pf4 +_f1_f2_exchange : exchange _f1 _f2 + : exchange _f1 _f2 +_f2_f1_exchange : exchange _f2 _f1 + : exchange _f2 _f1 +_f3_f4_exchange : forall A : Type, exchange _f3 _f4 + : forall A : Type, exchange _f3 _f4 +_f4_f3_exchange : forall A : Type, exchange _f4 _f3 + : forall A : Type, exchange _f4 _f3 +_pf3_pf4_exchange : forall A : Type, exchange _pf3 _pf4 + : forall A : Type, exchange _pf3 _pf4 +_pf4_pf3_exchange : forall A : Type, exchange _pf4 _pf3 + : forall A : Type, exchange _pf4 _pf3 +Query assignments: + Res = app + [global (const «Z_of_nat»), + app [global (const «nat_of_bool»), global (indc «true»)]] +Query assignments: + GR = indt «nat» +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»)]] +Query assignments: + GR = indt «F» + I = «elpi.tests.test_HOAS.82» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.82} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.82 +SORTS: + +WEAK CONSTRAINTS: + + +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 +is_pred = +fun (n : nat) (Pn : is_nat n) => +match + Pn in (is_nat n0) return (is_nat match n0 with + | 0 => n + | S u => u + end) +with +| is_O => Pn +| is_S _ Pu => Pu +end + : forall n : nat, is_nat n -> is_nat (Nat.pred n) + +Arguments is_pred n%nat_scope Pn +is_pred : is_nat2nat Nat.pred + : is_nat2nat Nat.pred +is_predn : is_nat2nat predn + : is_nat2nat predn +is_add : is_nat2nat2nat Nat.add + : is_nat2nat2nat Nat.add +Inductive is_bla : forall H : nat, is_nat H -> bla H -> Type := + is_Bla : forall H : nat, is_nat H -> is_bla 0 is_O (Bla H) + | is_Blu : forall (n : nat) (Pn : is_nat n) (H : bla n), + is_bla n Pn H -> is_bla 1 (is_S 0 is_O) (Blu n H). + +Arguments is_bla _%nat_scope P_ s1 +Arguments is_Bla _%nat_scope P_ +Arguments is_Blu n%nat_scope Pn _ P_ +Query assignments: + GR = indt «F» +Query assignments: + R = prod `r` (global (const «ring»)) c0 \ + prod `x` (app [global (const «carr»), c0]) c1 \ + app [global (indt «eq»), app [global (const «carr»), c0], c1, c1] + T = sort (typ «elpi.tests.test_elaborator.75») + _uvk_310_ = c0 \ c1 \ +X0 c0 c1 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.75 elpi.tests.test_elaborator.74 + elpi.tests.test_elaborator.73 elpi.tests.test_elaborator.72 + elpi.tests.test_elaborator.70} |= + ring.u0 <= elpi.tests.test_elaborator.70 + elpi.tests.test_elaborator.70 <= elpi.tests.test_elaborator.75 + elpi.tests.test_elaborator.73 <= elpi.tests.test_elaborator.74 + elpi.tests.test_elaborator.74 <= elpi.tests.test_elaborator.75 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] +[foo (indt «nat»), foo (indt «bool»)] +[] +[foo (indt «nat»)] +pglobal (indt «F») «elpi.tests.test_HOAS.84» +«elpi.tests.test_HOAS.84» +pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» +Query assignments: + GR = indt «F» + GR1 = indc «Build_F» + I = «elpi.tests.test_HOAS.84» + Spilled_1 = pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» + Spilled_2 = pglobal (indt «F») «elpi.tests.test_HOAS.84» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.84} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.84 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + PDb = [tc-instance (const «reali_is_bla_Blu») (tc-priority-given 0), + tc-instance (const «reali_is_bla_Bla») (tc-priority-given 0), + tc-instance (const «reali_is_bla») (tc-priority-given 0), + tc-instance (const «reali_is_weirdn») (tc-priority-given 0), + tc-instance (const «reali_is_quasidn») (tc-priority-given 0), + tc-instance (const «reali_is_predn») (tc-priority-given 0), + tc-instance (const «reali_is_pred») (tc-priority-given 0), + tc-instance (const «reali_is_nat2nat2nat») (tc-priority-given 0), + tc-instance (const «reali_is_nat2nat») (tc-priority-given 0), + tc-instance (const «reali_is_vec_length_rec») (tc-priority-given 0), + tc-instance (const «reali_is_vec_length_type») (tc-priority-given 0), + tc-instance (const «reali_is_test») (tc-priority-given 0), + tc-instance (const «reali_is_div») (tc-priority-given 0), + tc-instance (const «reali_is_divmod») (tc-priority-given 0), + tc-instance (const «reali_is_bool_false») (tc-priority-given 0), + tc-instance (const «reali_is_bool_true») (tc-priority-given 0), + tc-instance (const «reali_is_bool») (tc-priority-given 0), + tc-instance (const «reali_is_snd») (tc-priority-given 0), + tc-instance (const «reali_is_fst») (tc-priority-given 0), + tc-instance (const «reali_is_prod_pair») (tc-priority-given 0), + tc-instance (const «reali_is_prod») (tc-priority-given 0), + tc-instance (const «reali_is_add») (tc-priority-given 0), + tc-instance (const «reali_is_plus'») (tc-priority-given 0), + tc-instance (const «reali_is_eq_eq_refl») (tc-priority-given 0), + tc-instance (const «reali_is_eq») (tc-priority-given 0), + tc-instance (const «reali_is_is_list_is_cons») (tc-priority-given 0), + tc-instance (const «reali_is_is_list_is_nil») (tc-priority-given 0), + tc-instance (const «reali_is_is_list») (tc-priority-given 0), + tc-instance (const «reali_is_list_cons») (tc-priority-given 0), + tc-instance (const «reali_is_list_nil») (tc-priority-given 0), + tc-instance (const «reali_is_list») (tc-priority-given 0), + tc-instance (const «reali_is_vec_length») (tc-priority-given 0), + tc-instance (const «reali_is_vec_vcons») (tc-priority-given 0), + tc-instance (const «reali_is_vec_vnil») (tc-priority-given 0), + tc-instance (const «reali_is_vec») (tc-priority-given 0), + tc-instance (const «reali_is_fin_length») (tc-priority-given 0), + tc-instance (const «reali_is_fin_FS») (tc-priority-given 0), + tc-instance (const «reali_is_fin_FO») (tc-priority-given 0), + tc-instance (const «reali_is_fin») (tc-priority-given 0), + tc-instance (const «reali_is_nat_S») (tc-priority-given 0), + tc-instance (const «reali_is_nat_O») (tc-priority-given 0), + tc-instance (const «reali_is_nat») (tc-priority-given 0), + tc-instance (const «reali_is_unit_tt») (tc-priority-given 0), + tc-instance (const «reali_is_unit») (tc-priority-given 0), + tc-instance (const «reali_is_val_V») (tc-priority-given 0), + tc-instance (const «reali_is_val») (tc-priority-given 0), + tc-instance (const «reali_is_ord2_mkOrd2») (tc-priority-given 0), + tc-instance (const «reali_is_ord2») (tc-priority-given 0), + tc-instance (const «reali_is_ord_mkOrd») (tc-priority-given 0), + tc-instance (const «reali_is_ord») (tc-priority-given 0), + tc-instance (const «reali_is_is_leq») (tc-priority-given 0), + tc-instance (const «reali_is_sigma_bool_Build_sigma_bool») + (tc-priority-given 0), + tc-instance (const «reali_is_sigma_bool») (tc-priority-given 0), + tc-instance (const «reali_is_is_zero») (tc-priority-given 0), + tc-instance (const «Coverage.reali_is_bool_false») (tc-priority-given 0), + tc-instance (const «Coverage.reali_is_bool_true») (tc-priority-given 0), + tc-instance (const «Coverage.reali_is_bool») (tc-priority-given 0), + tc-instance (const «reali_is_enum_E3») (tc-priority-given 0), + tc-instance (const «reali_is_enum_E2») (tc-priority-given 0), + tc-instance (const «reali_is_enum_E1») (tc-priority-given 0), + tc-instance (const «reali_is_enum») (tc-priority-given 0), + tc-instance (const «reali_is_dep_record_Build_dep_record») + (tc-priority-given 0), + tc-instance (const «reali_is_dep_record») (tc-priority-given 0), + tc-instance (const «reali_is_pr_record_Build_pr_record») + (tc-priority-given 0), + tc-instance (const «reali_is_pr_record») (tc-priority-given 0), + tc-instance (const «reali_is_pa_record_Build_pa_record») + (tc-priority-given 0), + tc-instance (const «reali_is_pa_record») (tc-priority-given 0), + tc-instance (const «reali_is_fo_record_Build_fo_record») + (tc-priority-given 0), + tc-instance (const «reali_is_fo_record») (tc-priority-given 0), + tc-instance (const «reali_is_prim_float_PF») (tc-priority-given 0), + tc-instance (const «reali_is_prim_float») (tc-priority-given 0), + tc-instance (const «reali_is_prim_int_PI») (tc-priority-given 0), + tc-instance (const «reali_is_prim_int») (tc-priority-given 0), + tc-instance (const «reali_is_large_K26») (tc-priority-given 0), + tc-instance (const «reali_is_large_K25») (tc-priority-given 0), + tc-instance (const «reali_is_large_K24») (tc-priority-given 0), + tc-instance (const «reali_is_large_K23») (tc-priority-given 0), + tc-instance (const «reali_is_large_K22») (tc-priority-given 0), + tc-instance (const «reali_is_large_K21») (tc-priority-given 0), + tc-instance (const «reali_is_large_K20») (tc-priority-given 0), + tc-instance (const «reali_is_large_K19») (tc-priority-given 0), + tc-instance (const «reali_is_large_K18») (tc-priority-given 0), + tc-instance (const «reali_is_large_K17») (tc-priority-given 0), + tc-instance (const «reali_is_large_K16») (tc-priority-given 0), + tc-instance (const «reali_is_large_K15») (tc-priority-given 0), + tc-instance (const «reali_is_large_K14») (tc-priority-given 0), + tc-instance (const «reali_is_large_K13») (tc-priority-given 0), + tc-instance (const «reali_is_large_K12») (tc-priority-given 0), + tc-instance (const «reali_is_large_K11») (tc-priority-given 0), + tc-instance (const «reali_is_large_K10») (tc-priority-given 0), + tc-instance (const «reali_is_large_K9») (tc-priority-given 0), + tc-instance (const «reali_is_large_K8») (tc-priority-given 0), + tc-instance (const «reali_is_large_K7») (tc-priority-given 0), + tc-instance (const «reali_is_large_K6») (tc-priority-given 0), + tc-instance (const «reali_is_large_K5») (tc-priority-given 0), + tc-instance (const «reali_is_large_K4») (tc-priority-given 0), + tc-instance (const «reali_is_large_K3») (tc-priority-given 0), + tc-instance (const «reali_is_large_K2») (tc-priority-given 0), + tc-instance (const «reali_is_large_K1») (tc-priority-given 0), + tc-instance (const «reali_is_large») (tc-priority-given 0), + tc-instance (const «reali_is_iota_Why») (tc-priority-given 0), + tc-instance (const «reali_is_iota») (tc-priority-given 0), + tc-instance (const «reali_is_beta_Redex») (tc-priority-given 0), + tc-instance (const «reali_is_beta») (tc-priority-given 0), + tc-instance (const «reali_is_zeta_Envelope») (tc-priority-given 0), + tc-instance (const «reali_is_zeta») (tc-priority-given 0), + tc-instance (const «reali_is_dyn_box») (tc-priority-given 0), + tc-instance (const «reali_is_dyn») (tc-priority-given 0), + tc-instance (const «reali_is_vect_VCons») (tc-priority-given 0), + tc-instance (const «reali_is_vect_VNil») (tc-priority-given 0), + tc-instance (const «reali_is_vect») (tc-priority-given 0), + tc-instance (const «reali_is_w_via») (tc-priority-given 0), + tc-instance (const «reali_is_w») (tc-priority-given 0), + tc-instance (const «reali_is_nest_ConsN») (tc-priority-given 0), + tc-instance (const «reali_is_nest_NilN») (tc-priority-given 0), + tc-instance (const «reali_is_nest») (tc-priority-given 0), + tc-instance (const «reali_is_rose_o_Nodeo») (tc-priority-given 0), + tc-instance (const «reali_is_rose_o_Leafo») (tc-priority-given 0), + tc-instance (const «reali_is_rose_o») (tc-priority-given 0), + tc-instance (const «reali_is_rose_p_Nodep») (tc-priority-given 0), + tc-instance (const «reali_is_rose_p_Leafp») (tc-priority-given 0), + tc-instance (const «reali_is_rose_p») (tc-priority-given 0), + tc-instance (const «reali_is_rose_Node») (tc-priority-given 0), + tc-instance (const «reali_is_rose_Leaf») (tc-priority-given 0), + tc-instance (const «reali_is_rose») (tc-priority-given 0), + tc-instance (const «reali_is_box_peano_Box») (tc-priority-given 0), + tc-instance (const «reali_is_box_peano») (tc-priority-given 0), + tc-instance (const «reali_is_seq_Cons») (tc-priority-given 0), + tc-instance (const «reali_is_seq_Nil») (tc-priority-given 0), + tc-instance (const «reali_is_seq») (tc-priority-given 0), + tc-instance (const «reali_is_pair_Comma») (tc-priority-given 0), + tc-instance (const «reali_is_pair») (tc-priority-given 0), + tc-instance (const «reali_is_option_Some») (tc-priority-given 0), + tc-instance (const «reali_is_option_None») (tc-priority-given 0), + tc-instance (const «reali_is_option») (tc-priority-given 0), + tc-instance (const «reali_is_peano_Succ») (tc-priority-given 0), + tc-instance (const «reali_is_peano_Zero») (tc-priority-given 0), + tc-instance (const «reali_is_peano») (tc-priority-given 0), + tc-instance (const «Coverage.reali_is_unit_tt») (tc-priority-given 0), + tc-instance (const «Coverage.reali_is_unit») (tc-priority-given 0), + tc-instance (const «reali_is_empty») (tc-priority-given 0), + tc-instance (const «exports.reali_is_eq_eq_refl») (tc-priority-given 0), + tc-instance (const «exports.reali_is_eq») (tc-priority-given 0)] + Spilled_1 = indt «reali_db» +File "./tests/test_param1.v", line 158, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +«elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» +Query assignments: + I = «elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» + U = «elpi.tests.test_HOAS.85» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.85} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + Query assignments: GR = const «Ranalysis5.derivable_pt_lim_CVU» S = {{ Field_theory.AF_1_neq_0; Field_theory.AF_AR; Field_theory.AFdiv_def; @@ -11153,46 +10382,982 @@ Ring_polynom.PEpow; RMicromega.CInv; Field_theory.FEdiv; Tauto.EQ; RMicromega.COpp; Field_theory.FEpow; }} Spilled_1 = 3375 - T = 1.834547 + T = 1.295058 +empty_fields_t : positive -> Type + : positive -> Type +empty_fields : forall n : empty, empty_fields_t (empty_tag n) + : forall n : empty, empty_fields_t (empty_tag n) +empty_construct +: +forall p : positive, empty_fields_t p -> Datatypes.option empty + : forall p : positive, empty_fields_t p -> Datatypes.option empty +empty_constructP +: +forall n : empty, +empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n + : forall n : empty, + empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n +unit_fields_t : positive -> Type + : positive -> Type +unit_fields : forall n : unit, unit_fields_t (unit_tag n) + : forall n : unit, unit_fields_t (unit_tag n) +unit_construct +: +forall p : positive, unit_fields_t p -> Datatypes.option unit + : forall p : positive, unit_fields_t p -> Datatypes.option unit +unit_constructP +: +forall n : unit, +unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n + : forall n : unit, + unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n +peano_fields_t : positive -> Type + : positive -> Type +peano_fields : forall n : peano, peano_fields_t (peano_tag n) + : forall n : peano, peano_fields_t (peano_tag n) +peano_construct +: +forall p : positive, peano_fields_t p -> Datatypes.option peano + : forall p : positive, peano_fields_t p -> Datatypes.option peano +peano_constructP +: +forall n : peano, +peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n + : forall n : peano, + peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n +option_fields_t : Type -> positive -> Type + : Type -> positive -> Type +option_fields +: +forall (A : Type) (l : option A), option_fields_t A (option_tag A l) + : forall (A : Type) (l : option A), option_fields_t A (option_tag A l) +option_construct +: +forall (A : Type) (p : positive), +option_fields_t A p -> Datatypes.option (option A) + : forall (A : Type) (p : positive), + option_fields_t A p -> Datatypes.option (option A) +option_constructP +: +forall (A : Type) (l : option A), +option_construct A (option_tag A l) (option_fields A l) = Datatypes.Some l + : forall (A : Type) (l : option A), + option_construct A (option_tag A l) (option_fields A l) = + Datatypes.Some l +pair_fields_t : Type -> Type -> positive -> Type + : Type -> Type -> positive -> Type +pair_fields +: +forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) + : forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) +pair_construct +: +forall (A B : Type) (p : positive), +pair_fields_t A B p -> Datatypes.option (pair A B) + : forall (A B : Type) (p : positive), + pair_fields_t A B p -> Datatypes.option (pair A B) +pair_constructP +: +forall (A B : Type) (l : pair A B), +pair_construct A B (pair_tag A B l) (pair_fields A B l) = Datatypes.Some l + : forall (A B : Type) (l : pair A B), + pair_construct A B (pair_tag A B l) (pair_fields A B l) = + Datatypes.Some l +seq_fields_t : Type -> positive -> Type + : Type -> positive -> Type +seq_fields : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) + : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) +seq_construct +: +forall (A : Type) (p : positive), +seq_fields_t A p -> Datatypes.option (seq A) + : forall (A : Type) (p : positive), + seq_fields_t A p -> Datatypes.option (seq A) +seq_constructP +: +forall (A : Type) (l : seq A), +seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l + : forall (A : Type) (l : seq A), + seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l +rose_fields_t : Type -> positive -> Type + : Type -> positive -> Type +rose_fields : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) + : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) +rose_construct +: +forall (A : Type) (p : positive), +rose_fields_t A p -> Datatypes.option (rose A) + : forall (A : Type) (p : positive), + rose_fields_t A p -> Datatypes.option (rose A) +rose_constructP +: +forall (A : Type) (l : rose A), +rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l + : forall (A : Type) (l : rose A), + rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l +beta_fields_t : Type -> positive -> Type + : Type -> positive -> Type +beta_fields : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) + : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) +beta_construct +: +forall (A : Type) (p : positive), +beta_fields_t A p -> Datatypes.option (beta A) + : forall (A : Type) (p : positive), + beta_fields_t A p -> Datatypes.option (beta A) +beta_constructP +: +forall (A : Type) (l : beta A), +beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l + : forall (A : Type) (l : beta A), + beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l +large_fields_t : positive -> Type + : positive -> Type +large_fields : forall n : large, large_fields_t (large_tag n) + : forall n : large, large_fields_t (large_tag n) +large_construct +: +forall p : positive, large_fields_t p -> Datatypes.option large + : forall p : positive, large_fields_t p -> Datatypes.option large +large_constructP +: +forall n : large, +large_construct (large_tag n) (large_fields n) = Datatypes.Some n + : forall n : large, + large_construct (large_tag n) (large_fields n) = Datatypes.Some n +prim_int_fields_t : positive -> Type + : positive -> Type +prim_int_fields : forall n : prim_int, prim_int_fields_t (prim_int_tag n) + : forall n : prim_int, prim_int_fields_t (prim_int_tag n) +prim_int_construct +: +forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int + : forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int +prim_int_constructP +: +forall n : prim_int, +prim_int_construct (prim_int_tag n) (prim_int_fields n) = Datatypes.Some n + : forall n : prim_int, + prim_int_construct (prim_int_tag n) (prim_int_fields n) = + Datatypes.Some n +pa_record_fields_t : Type -> positive -> Type + : Type -> positive -> Type +pa_record_fields +: +forall (A : Type) (l : pa_record A), pa_record_fields_t A (pa_record_tag A l) + : forall (A : Type) (l : pa_record A), + pa_record_fields_t A (pa_record_tag A l) +pa_record_construct +: +forall (A : Type) (p : positive), +pa_record_fields_t A p -> Datatypes.option (pa_record A) + : forall (A : Type) (p : positive), + pa_record_fields_t A p -> Datatypes.option (pa_record A) +pa_record_constructP +: +forall (A : Type) (l : pa_record A), +pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = +Datatypes.Some l + : forall (A : Type) (l : pa_record A), + pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = + Datatypes.Some l +pr_record_fields_t : Type -> positive -> Type + : Type -> positive -> Type +pr_record_fields +: +forall (A : Type) (l : pr_record A), pr_record_fields_t A (pr_record_tag A l) + : forall (A : Type) (l : pr_record A), + pr_record_fields_t A (pr_record_tag A l) +pr_record_construct +: +forall (A : Type) (p : positive), +pr_record_fields_t A p -> Datatypes.option (pr_record A) + : forall (A : Type) (p : positive), + pr_record_fields_t A p -> Datatypes.option (pr_record A) +pr_record_constructP +: +forall (A : Type) (l : pr_record A), +pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = +Datatypes.Some l + : forall (A : Type) (l : pr_record A), + pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = + Datatypes.Some l +sigma_bool_fields_t : positive -> Type + : positive -> Type +sigma_bool_fields +: +forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) + : forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) +sigma_bool_construct +: +forall p : positive, sigma_bool_fields_t p -> Datatypes.option sigma_bool + : forall p : positive, + sigma_bool_fields_t p -> Datatypes.option sigma_bool +sigma_bool_constructP +: +forall l : sigma_bool, +sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = +Datatypes.Some l + : forall l : sigma_bool, + sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = + Datatypes.Some l +ord_fields_t : peano -> positive -> Type + : peano -> positive -> Type +ord_fields : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) + : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) +ord_construct +: +forall (n : peano) (p : positive), +ord_fields_t n p -> Datatypes.option (ord n) + : forall (n : peano) (p : positive), + ord_fields_t n p -> Datatypes.option (ord n) +ord_constructP +: +forall (p : peano) (o : ord p), +ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o + : forall (p : peano) (o : ord p), + ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o +ord2_fields_t : peano -> positive -> Type + : peano -> positive -> Type +ord2_fields : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) + : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) +ord2_construct +: +forall (n : peano) (p : positive), +ord2_fields_t n p -> Datatypes.option (ord2 n) + : forall (n : peano) (p : positive), + ord2_fields_t n p -> Datatypes.option (ord2 n) +ord2_constructP +: +forall (p : peano) (o : ord2 p), +ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o + : forall (p : peano) (o : ord2 p), + ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o +val_fields_t : positive -> Type + : positive -> Type +val_fields : forall i : val, val_fields_t (val_tag i) + : forall i : val, val_fields_t (val_tag i) +val_construct : forall p : positive, val_fields_t p -> Datatypes.option val + : forall p : positive, val_fields_t p -> Datatypes.option val +val_constructP +: +forall v : val, val_construct (val_tag v) (val_fields v) = Datatypes.Some v + : forall v : val, + val_construct (val_tag v) (val_fields v) = Datatypes.Some v +COQC tests/test_eqb.v +Universe constraints: +------------------ Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.81 elpi.tests.test_HOAS.80} |= - elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 + {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.81} + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.81 - elpi.tests.test_HOAS.80 + 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} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.87 + elpi.tests.test_HOAS.86 SORTS: WEAK CONSTRAINTS: -Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because -elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 Query assignments: - E = Cannot enforce elpi.tests.test_HOAS.81 = elpi.tests.test_HOAS.80 because -elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.80» - I2 = «elpi.tests.test_HOAS.81» - L1 = «elpi.tests.test_HOAS.80» - L2 = «elpi.tests.test_HOAS.81» - U1 = «elpi.tests.test_HOAS.80» - U2 = «elpi.tests.test_HOAS.81» + 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.81 elpi.tests.test_HOAS.80} |= - elpi.tests.test_HOAS.80 < elpi.tests.test_HOAS.81 + {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.81} + {elpi.tests.test_HOAS.87 elpi.tests.test_HOAS.86} FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.81 - elpi.tests.test_HOAS.80 + 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. +derive.param1_trivial: wrong shape is_nest +. It does not look like a unary parametricity translation of an inductive with no indexes. +Query assignments: + S = {{ Nat.add; eq; nat; O; }} + Spilled_1 = 4 + T = prod `x` (global (indt «nat»)) c0 \ + app + [global (indt «eq»), X0 c0, + app [global (const «Nat.add»), c0, global (indc «O»)], c0] + _uvk_18_ = c0 \ +X0 c0 +Syntactic constraints: + {c0} : decl c0 `x` (global (indt «nat»)) ?- evar (X0 c0) (X1 c0) (X0 c0) /* suspended on X0 */ + {c0} : decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0) (sort (typ «elpi.tests.test_API_env.30»)) (X1 c0) /* suspended on X2, X1 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_env.30} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α8 +WEAK CONSTRAINTS: + + +Query assignments: + T = global (const «int») + X = primitive (uint63 99) +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} +FLEXIBLE 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 |= Set <= list.u0 + u <= list.u0 *) + +Arguments tree A%type_scope +Arguments leaf A%type_scope _ +Arguments node A%type_scope _ _%list_scope +derive.param1_trivial: wrong shape is_vect A PA +. It does not look like a unary parametricity translation of an inductive with no indexes. +Query assignments: + Decl = record Rec (sort (typ «elpi.tests.test_API_env.31»)) BuildRec + (field [] f (sort (typ «elpi.tests.test_API_env.32»)) c0 \ end-record) + _uvk_27_ = «elpi.tests.test_API_env.31» + _uvk_28_ = «elpi.tests.test_API_env.32» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} +FLEXIBLE UNIVERSES: + elpi.tests.test_API_env.32 + elpi.tests.test_API_env.31 +SORTS: + +WEAK CONSTRAINTS: + + +Module +Test +:= Struct + Record Rec@{u u0} : Type@{u} := BuildRec + { f : Type@{u0} }. + (* u u0 |= u0 < u *) + Definition f : Rec@{u u0} -> Type@{u0}. + (* u u0 |= u0 < u *) + End + +Test.f@{elpi.tests.test_API_env.33 +elpi.tests.test_API_env.34} + : Test.Rec@{elpi.tests.test_API_env.33 elpi.tests.test_API_env.34} -> + Type@{elpi.tests.test_API_env.34} +(* {elpi.tests.test_API_env.34 elpi.tests.test_API_env.33} |= + elpi.tests.test_API_env.34 < elpi.tests.test_API_env.33 *) +File "./tests/test_param1.v", line 176, characters 0-66: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +Query assignments: + T = global (const «float») + X = primitive (float64 993000) +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 <= list.u0 + 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} + FLEXIBLE 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 <= list.u0 + 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} +FLEXIBLE UNIVERSES: + M.tree.u0 +SORTS: + +WEAK CONSTRAINTS: + + +parameter A maximal (sort (typ «elpi.tests.test_HOAS.105»)) c0 \ + parameter x explicit (prod `_` c0 c1 \ c0) c1 \ + record c (sort prop) Build_c end-record +COQC tests/test_param1_functor.v +COQC tests/test_param1_congr.v +Query assignments: + LP = «Coq.ZArith.Znat» + MP = «Coq.ZArith.Znat.N2Z» +hello [int 1, int 2, trm (global (indt «nat»)), str x] +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 ?e14@{x:=x0} then 3 else y +COQC tests/test_API2.v +Query assignments: + _uvk_323_ = X0 +Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3246 <= Set +File "./tests/test_derive.v", line 33, characters 2-9: +Warning: This command does not support this attribute: verbose. +[unsupported-attributes,parsing,default] +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.005666 +Derivation isK on indt «nat» +Derivation isK on indt «nat» took 0.008515 +Derivation eq on indt «nat» +Derivation eq on indt «nat» took 0.007566 +Derivation invert on indt «nat» +Derivation invert on indt «nat» took 0.009705 +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.010476 +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.011659 +Skipping derivation eqbcorrect on indt «nat» since it has been already run +Derivation eqcorrect on indt «nat» +Derivation eqcorrect on indt «nat» took 0.006116 +Skipping derivation eqbOK on indt «nat» since it has been already run +Derivation eqOK on indt «nat» +Derivation eqOK on indt «nat» took 0.004206 +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 +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 +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 +empty_eqb : eq_test2 empty empty + : eq_test2 empty empty +unit_eqb : eq_test2 unit unit + : eq_test2 unit unit +peano_eqb : eq_test2 peano peano + : eq_test2 peano peano +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 +option_eqb : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) + : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) +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 +pair_eqb +: +forall A : Type, +eq_test2 A A -> +forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) + : forall A : Type, + eq_test2 A A -> + forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) +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 +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) +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 +rose_eqb : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) + : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) +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 +beta_eqb : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) + : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) +prim_int_eqb : eq_test2 prim_int prim_int + : eq_test2 prim_int prim_int +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 +fo_record_eqb : eq_test2 fo_record fo_record + : eq_test2 fo_record fo_record +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 +pa_record_eqb +: +forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) + : forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) +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 +pr_record_eqb +: +forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) + : forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) +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 +enum_eqb : eq_test2 enum enum + : eq_test2 enum enum +sigma_bool_eqb : eq_test2 sigma_bool sigma_bool + : eq_test2 sigma_bool sigma_bool +ord_eqb : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) + : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) +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 +ord2_eqb : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) + : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) +congr_is_E1 : is_E1 = is_E1 + : is_E1 = is_E1 +val_eqb : eq_test2 val val + : eq_test2 val val +alias_eqb : eq_test2 alias alias + : eq_test2 alias alias +COQC tests/test_param1_trivial.v +projSucc1 : peano -> peano -> peano + : peano -> peano -> peano +projSome1 : forall A : Type, A -> option A -> A + : forall A : Type, A -> option A -> A +projComma1 : forall A B : Type, A -> B -> pair A B -> A + : forall A B : Type, A -> B -> pair A B -> A +projComma2 : forall A B : Type, A -> B -> pair A B -> B + : forall A B : Type, A -> B -> pair A B -> B +projCons1 : forall A : Type, A -> seq A -> seq A -> A + : forall A : Type, A -> seq A -> seq A -> A +projCons2 : forall A : Type, A -> seq A -> seq A -> seq A + : forall A : Type, A -> seq A -> seq A -> seq A +projLeaf1 : forall A : Type, A -> rose A -> A + : forall A : Type, A -> rose A -> A +projNode1 : forall A : Type, seq (rose A) -> rose A -> seq (rose A) + : forall A : Type, seq (rose A) -> rose A -> seq (rose A) +projConsN1 : forall A : Type, A -> nest (pair A A) -> nest A -> A + : forall A : Type, A -> nest (pair A A) -> nest A -> A +projConsN2 +: +forall A : Type, A -> nest (pair A A) -> nest A -> nest (pair A A) + : forall A : Type, A -> nest (pair A A) -> nest A -> nest (pair A A) +projvia1 : forall A : Type, (A -> w A) -> w A -> A -> w A + : forall A : Type, (A -> w A) -> w A -> A -> w A +projVCons1 +: +forall (A : Type) (i : peano), +A -> forall j : peano, vect A j -> vect A i -> A + : forall (A : Type) (i : peano), + A -> forall j : peano, vect A j -> vect A i -> A +projVCons2 +: +forall (A : Type) (i : peano), +A -> forall j : peano, vect A j -> vect A i -> peano + : forall (A : Type) (i : peano), + A -> forall j : peano, vect A j -> vect A i -> peano +projVCons3 +: +forall (A : Type) (i : peano), +A -> forall j : peano, vect A j -> vect A i -> {w : peano & vect A w} + : forall (A : Type) (i : peano), + A -> forall j : peano, vect A j -> vect A i -> {w : peano & vect A w} +projbox1 : forall T : Type, T -> dyn -> Type + : forall T : Type, T -> dyn -> Type +projbox2 : forall T : Type, T -> dyn -> {T0 : Type & T0} + : forall T : Type, T -> dyn -> {T0 : Type & T0} +projEnvelope1 : forall A : Type, A -> A -> zeta A -> A + : forall A : Type, A -> A -> zeta A -> A +eq_refl : projEnvelope1 nat 1 1 (Envelope nat 0 1) = 0 + : projEnvelope1 nat 1 1 (Envelope nat 0 1) = 0 +projEnvelope2 : forall A : Type, A -> A -> zeta A -> A + : forall A : Type, A -> A -> zeta A -> A +eq_refl : projEnvelope2 nat 1 1 (Envelope nat 1 0) = 0 + : projEnvelope2 nat 1 1 (Envelope nat 1 0) = 0 +projRedex1 : forall A : Type, A -> beta A -> A + : forall A : Type, A -> beta A -> A +projWhy1 +: +forall n : peano, +match n with +| Zero => peano +| Succ _ => unit +end -> iota -> peano + : forall n : peano, + match n with + | Zero => peano + | Succ _ => unit + end -> iota -> peano +projWhy2 +: +forall n : peano, +match n with +| Zero => peano +| Succ _ => unit +end -> +iota -> {i : peano & match i with + | Zero => peano + | Succ _ => unit + end} + : forall n : peano, + match n with + | Zero => peano + | Succ _ => unit + end -> + iota -> + {i : peano & match i with + | Zero => peano + | Succ _ => unit + end} +projPI1 + : PrimInt63.int -> prim_int -> PrimInt63.int +projPF1 + : PrimFloat.float -> prim_float -> PrimFloat.float +projBuild_fo_record1 : peano -> unit -> fo_record -> peano + : peano -> unit -> fo_record -> peano +projBuild_fo_record2 : peano -> unit -> fo_record -> unit + : peano -> unit -> fo_record -> unit +projBuild_pa_record2 : forall A : Type, peano -> A -> pa_record A -> A + : forall A : Type, peano -> A -> pa_record A -> A +projBuild_pr_record2 : forall A : Type, peano -> A -> pr_record A -> A + : forall A : Type, peano -> A -> pr_record A -> A +COQC tests/test_bcongr.v +is_empty_functor : func is_empty + : func is_empty +is_unit_functor : func is_unit + : func is_unit +is_peano_functor : func is_peano + : func is_peano +is_option_functor : func1 is_option + : func1 is_option +is_pair_functor : func2 is_pair + : func2 is_pair +is_seq_functor : func1 is_seq + : func1 is_seq +is_rose_functor : func1 is_rose + : func1 is_rose +is_vect_functor +: +forall (A : Type) (P Q : A -> Type), +(forall y : A, P y -> Q y) -> +forall (i : peano) (p : is_peano i) (v : vect A i), +is_vect A P i p v -> is_vect A Q i p v + : forall (A : Type) (P Q : A -> Type), + (forall y : A, P y -> Q y) -> + forall (i : peano) (p : is_peano i) (v : vect A i), + is_vect A P i p v -> is_vect A Q i p v +is_dyn_functor : func is_dyn + : func is_dyn +is_zeta_functor : func1 is_zeta + : func1 is_zeta +is_beta_functor : func1 is_beta + : func1 is_beta +is_iota_functor : func is_iota + : func is_iota +is_large_functor : func is_large + : func is_large +is_prim_int_functor : func is_prim_int + : func is_prim_int +is_prim_float_functor : func is_prim_float + : func is_prim_float +is_fo_record_functor : func is_fo_record + : func is_fo_record +is_pa_record_functor : func1 is_pa_record + : func1 is_pa_record +is_pr_record_functor : func1 is_pr_record + : func1 is_pr_record +is_enum_functor : func is_enum + : func is_enum +is_ord_functor : forall (n : peano) (pn : is_peano n), func (is_ord n pn) + : forall (n : peano) (pn : is_peano n), func (is_ord n pn) +is_ord2_functor : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) + : forall (n : peano) (pn : is_peano n), func (is_ord2 n pn) +is_val_functor : func is_val + : func is_val +COQC tests/test_induction.v +Query assignments: + X1 = «x1» + X2 = «x2» + X3 = «x3» +Query assignments: + M = [[mode-ground], [mode-input]] 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) @@ -11866,409 +12031,155 @@ 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 -eq_axiom_tt : eq_axiom_at unit unit_eq tt - : eq_axiom_at unit unit_eq tt -eq_axiom_Zero : eq_axiom_at peano peano_eq Zero - : eq_axiom_at peano peano_eq Zero -eq_axiom_Succ -: -forall y : peano, -eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) - : forall y : peano, - eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) -eq_axiom_None -: -forall (A : Type) (f : eq_test A), -eq_axiom_at (option A) (option_eq A f) (None A) - : forall (A : Type) (f : eq_test A), - eq_axiom_at (option A) (option_eq A f) (None A) -eq_axiom_Some -: -forall (A : Type) (f : eq_test A) (x : A), -eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) - : forall (A : Type) (f : eq_test A) (x : A), - eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) -eq_axiom_Comma -: -forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), -eq_axiom_at A f x -> -forall y : B, -eq_axiom_at B g y -> eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) - : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), - eq_axiom_at A f x -> - forall y : B, - eq_axiom_at B g y -> - eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) -eq_axiom_Nil +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 (A : Type) (f : eq_test A), eq_axiom_at (seq A) (seq_eq A f) (Nil A) - : forall (A : Type) (f : eq_test A), - eq_axiom_at (seq A) (seq_eq A f) (Nil A) -eq_axiom_Cons +forall (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) (f : eq_test A) (x : A), -eq_axiom_at A f x -> -forall xs : seq A, -eq_axiom_at (seq A) (seq_eq A f) xs -> -eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) - : forall (A : Type) (f : eq_test A) (x : A), - eq_axiom_at A f x -> - forall xs : seq A, - eq_axiom_at (seq A) (seq_eq A f) xs -> - eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) -eq_axiom_Leaf +forall (A : Type) (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 : Type) (f : eq_test A) (a : A), -eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) - : forall (A : Type) (f : eq_test A) (a : A), - eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) -eq_axiom_Node +forall (A 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) (f : eq_test A) (l : seq (rose A)), -eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> -eq_axiom_at (rose A) (rose_eq A f) (Node A l) - : forall (A : Type) (f : eq_test A) (l : seq (rose A)), - eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> - eq_axiom_at (rose A) (rose_eq A f) (Node A l) -eq_axiom_Envelope - : forall (Sender : Type) (f : eq_test Sender) (x : Sender), - eq_axiom_at Sender f x -> - forall x0 : Sender, - eq_axiom_at Sender f x0 -> - forall x1 : zeta Sender, - eq_axiom_on (zeta Sender) (zeta_eq Sender f) (Envelope Sender x x0) x1 -eq_axiom_Redex - : forall (A : Type) (f : eq_test A) (x : A), - eq_axiom_at A f x -> - forall x0 : beta A, eq_axiom_on (beta A) (beta_eq A f) (Redex A x) x0 -eq_axiom_PI - : forall x : PrimInt63.int, - eq_axiom_at PrimInt63.int PrimInt63.eqb x -> - forall x0 : prim_int, eq_axiom_on prim_int prim_int_eq (PI x) x0 -eq_axiom_PF - : forall x : PrimFloat.float, - eq_axiom_at PrimFloat.float PrimFloat.eqb x -> - forall x0 : prim_float, eq_axiom_on prim_float prim_float_eq (PF x) x0 -eq_axiom_Build_fo_record +forall (A : Type) (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 x : peano, -eq_axiom_at peano peano_eq x -> -forall y : unit, -eq_axiom_at unit unit_eq y -> -eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} - : forall x : peano, - eq_axiom_at peano peano_eq x -> - forall y : unit, - eq_axiom_at unit unit_eq y -> - eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} -eq_axiom_Build_pa_record +forall (A : Type) (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) (f : eq_test A) (x : peano), -eq_axiom_at peano peano_eq x -> -forall y : A, -eq_axiom_at A f y -> -eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} - : forall (A : Type) (f : eq_test A) (x : peano), - eq_axiom_at peano peano_eq x -> - forall y : A, - eq_axiom_at A f y -> - eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} -eq_axiom_Build_pr_record +forall (A : Type) (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) (f : eq_test A) (x : peano), -eq_axiom_at peano peano_eq x -> -forall y : A, -eq_axiom_at A f y -> -eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} - : forall (A : Type) (f : eq_test A) (x : peano), - eq_axiom_at peano peano_eq x -> - forall y : A, - eq_axiom_at A f y -> - eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} -eq_axiom_E1 : eq_axiom_at enum enum_eq E1 - : eq_axiom_at enum enum_eq E1 -eq_axiom_E2 : eq_axiom_at enum enum_eq E2 - : eq_axiom_at enum enum_eq E2 -eq_axiom_E3 : eq_axiom_at enum enum_eq E3 - : eq_axiom_at enum enum_eq E3 -COQC tests/test_eqcorrect.v -Query assignments: - _uvk_323_ = X0 -Query assignments: - GR = indt «nat» -Query assignments: - S = {{ Nat.add; eq; nat; O; }} - Spilled_1 = 4 - T = prod `x` (global (indt «nat»)) c0 \ - app - [global (indt «eq»), X0 c0, - app [global (const «Nat.add»), c0, global (indc «O»)], c0] - _uvk_18_ = c0 \ -X0 c0 -Syntactic constraints: - {c0} : decl c0 `x` (global (indt «nat»)) ?- evar (X0 c0) (X1 c0) (X0 c0) /* suspended on X0 */ - {c0} : decl c0 `x` (global (indt «nat»)) - ?- evar (X2 c0) (sort (typ «elpi.tests.test_API_env.30»)) (X1 c0) /* suspended on X2, X1 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_env.30} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α8 -WEAK CONSTRAINTS: - - -Query assignments: - X1 = «x1» - X2 = «x2» - X3 = «x3» -Query assignments: - M = [[mode-ground], [mode-input]] -Query assignments: - GR = indt «F» - I = «elpi.tests.test_HOAS.82» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.82} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.82 -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - Decl = record Rec (sort (typ «elpi.tests.test_API_env.31»)) BuildRec - (field [] f (sort (typ «elpi.tests.test_API_env.32»)) c0 \ end-record) - _uvk_27_ = «elpi.tests.test_API_env.31» - _uvk_28_ = «elpi.tests.test_API_env.32» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_env.32 elpi.tests.test_API_env.31} -FLEXIBLE UNIVERSES: - elpi.tests.test_API_env.32 - elpi.tests.test_API_env.31 -SORTS: - -WEAK CONSTRAINTS: - - -Module -Test -:= Struct - Record Rec@{u u0} : Type@{u} := BuildRec - { f : Type@{u0} }. - (* u u0 |= u0 < u *) - Definition f : Rec@{u u0} -> Type@{u0}. - (* u u0 |= u0 < u *) - End - -Test.f@{elpi.tests.test_API_env.33 -elpi.tests.test_API_env.34} - : Test.Rec@{elpi.tests.test_API_env.33 elpi.tests.test_API_env.34} -> - Type@{elpi.tests.test_API_env.34} -(* {elpi.tests.test_API_env.34 elpi.tests.test_API_env.33} |= - elpi.tests.test_API_env.34 < elpi.tests.test_API_env.33 *) -Query assignments: - GR = indt «F» -Query assignments: - LP = «Coq.ZArith.Znat» - MP = «Coq.ZArith.Znat.N2Z» -1 -1 -1.000000 -1.2 -pglobal (indt «F») «elpi.tests.test_HOAS.84» -«elpi.tests.test_HOAS.84» -pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» -Query assignments: - GR = indt «F» - GR1 = indc «Build_F» - I = «elpi.tests.test_HOAS.84» - Spilled_1 = pglobal (indc «Build_F») «elpi.tests.test_HOAS.84» - Spilled_2 = pglobal (indt «F») «elpi.tests.test_HOAS.84» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.84} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.84 -SORTS: - -WEAK CONSTRAINTS: - - -«elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» -Query assignments: - I = «elpi.tests.test_HOAS.85 elpi.tests.test_HOAS.85» - U = «elpi.tests.test_HOAS.85» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.85} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -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) (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 : 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 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) (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) (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) (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) (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 (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 (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 (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 (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 (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 (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) (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) (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) (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 -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} - FLEXIBLE 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} - FLEXIBLE 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} -FLEXIBLE 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. -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} -FLEXIBLE 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 |= Set <= list.u0 - u <= list.u0 *) - -Arguments tree A%type_scope -Arguments leaf A%type_scope _ -Arguments node A%type_scope _ _%list_scope +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 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 @@ -12301,459 +12212,10 @@ 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 -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 <= list.u0 - 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} - FLEXIBLE 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 <= list.u0 - 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} -FLEXIBLE UNIVERSES: - M.tree.u0 -SORTS: - -WEAK CONSTRAINTS: - - -parameter A maximal (sort (typ «elpi.tests.test_HOAS.105»)) c0 \ - parameter x explicit (prod `_` c0 c1 \ c0) c1 \ - record c (sort prop) Build_c end-record -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 -: -forall A : Type, -(A -> A -> bool) -> forall n : nat, Vector.t A n -> Vector.t A n -> bool - : forall A : Type, - (A -> A -> bool) -> - forall n : nat, Vector.t A n -> Vector.t A n -> bool -Vector.t_isk_nil : forall (A : Type) (n : nat), Vector.t A n -> bool - : forall (A : Type) (n : nat), Vector.t A n -> bool -Vector.t_isk_cons : forall (A : Type) (n : nat), Vector.t A n -> bool - : forall (A : Type) (n : nat), Vector.t A n -> bool -Vector.t_map -: -forall A B : Type, (A -> B) -> forall n : nat, Vector.t A n -> Vector.t B n - : forall A B : Type, - (A -> B) -> forall n : nat, Vector.t A n -> Vector.t B n -Vector.t_getk_cons1 -: -forall (A : Type) (n : nat), -A -> forall m : nat, Vector.t A m -> Vector.t A n -> A - : forall (A : Type) (n : nat), - A -> forall m : nat, Vector.t A m -> Vector.t A n -> A -Vector.t_getk_cons2 -: -forall (A : Type) (n : nat), -A -> forall m : nat, Vector.t A m -> Vector.t A n -> nat - : forall (A : Type) (n : nat), - A -> forall m : nat, Vector.t A m -> Vector.t A n -> nat -Vector.t_getk_cons3 -: -forall (A : Type) (n : nat), -A -> forall m : nat, Vector.t A m -> Vector.t A n -> {k : nat & Vector.t A k} - : forall (A : Type) (n : nat), - A -> - forall m : nat, - Vector.t A m -> Vector.t A n -> {k : nat & Vector.t A k} -Vector.is_t -: -forall A : Type, -(A -> Type) -> forall n : nat, is_nat n -> Vector.t A n -> Type - : forall A : Type, - (A -> Type) -> forall n : nat, is_nat n -> Vector.t A n -> Type -Vector.is_nil -: -forall (A : Type) (PA : A -> Type), Vector.is_t A PA 0 is_O (Vector.nil A) - : forall (A : Type) (PA : A -> Type), - Vector.is_t A PA 0 is_O (Vector.nil A) -Vector.is_cons -: -forall (A : Type) (PA : A -> Type) (a : A), -PA a -> -forall (n : nat) (Pn : is_nat n) (H : Vector.t A n), -Vector.is_t A PA n Pn H -> -Vector.is_t A PA (S n) (is_S n Pn) (Vector.cons A a n H) - : forall (A : Type) (PA : A -> Type) (a : A), - PA a -> - forall (n : nat) (Pn : is_nat n) (H : Vector.t A n), - Vector.is_t A PA n Pn H -> - Vector.is_t A PA (S n) (is_S n Pn) (Vector.cons A a n H) -Vector.is_t_functor -: -forall (A : Type) (PA QA : A -> Type), -(forall x : A, PA x -> QA x) -> -forall (n : nat) (nR : is_nat n) (v : Vector.t A n), -Vector.is_t A PA n nR v -> Vector.is_t A QA n nR v - : forall (A : Type) (PA QA : A -> Type), - (forall x : A, PA x -> QA x) -> - forall (n : nat) (nR : is_nat n) (v : Vector.t A n), - Vector.is_t A PA n nR v -> Vector.is_t A QA n nR v -Vector.t_induction -: -forall (A : Type) (PA : A -> Type) - (P : forall n : nat, is_nat n -> Vector.t A n -> Type), -P 0 is_O (Vector.nil A) -> -(forall a : A, - PA a -> - forall (m : nat) (mR : is_nat m) (v : Vector.t A m), - P m mR v -> P (S m) (is_S m mR) (Vector.cons A a m v)) -> -forall (n : nat) (nR : is_nat n) (v : Vector.t A n), -Vector.is_t A PA n nR v -> P n nR v - : forall (A : Type) (PA : A -> Type) - (P : forall n : nat, is_nat n -> Vector.t A n -> Type), - P 0 is_O (Vector.nil A) -> - (forall a : A, - PA a -> - forall (m : nat) (mR : is_nat m) (v : Vector.t A m), - P m mR v -> P (S m) (is_S m mR) (Vector.cons A a m v)) -> - forall (n : nat) (nR : is_nat n) (v : Vector.t A n), - Vector.is_t A PA n nR v -> P n nR v -Vector.t_tag : forall (A : Type) (i : nat), Vector.t A i -> BinNums.positive - : 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 -File "./tests/test_API2.v", line 126, characters 0-16: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] -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 - : Type -> BinNums.positive -> Type -XXX.rtree_fields -: -forall (A : Type) (l : rtree A), XXX.rtree_fields_t A (XXX.rtree_tag A l) - : forall (A : Type) (l : rtree A), - XXX.rtree_fields_t A (XXX.rtree_tag A l) -XXX.rtree_construct -: -forall (A : Type) (p : BinNums.positive), -XXX.rtree_fields_t A p -> option (rtree A) - : forall (A : Type) (p : BinNums.positive), - XXX.rtree_fields_t A p -> option (rtree A) -XXX.rtree_constructP -: -forall (A : Type) (l : rtree A), -XXX.rtree_construct A (XXX.rtree_tag A l) (XXX.rtree_fields A l) = Some l - : forall (A : Type) (l : rtree A), - XXX.rtree_construct A (XXX.rtree_tag A l) (XXX.rtree_fields A l) = - Some l -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 -derive.param1_trivial: wrong shape is_triv -. It does not look like a unary parametricity translation of an inductive with no indexes. -triv.induction -: -forall P : forall H : Coverage.unit, is_unit H -> triv H -> Prop, -(forall (t : Coverage.unit) (Pt : is_unit t), P t Pt (one t)) -> -(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 - : forall P : forall H : Coverage.unit, is_unit H -> triv H -> Prop, - (forall (t : Coverage.unit) (Pt : is_unit t), P t Pt (one t)) -> - (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 -File "./tests/test_API2.v", line 134, characters 0-14: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] -Debug: Cannot enforce elpi.apps.derive.tests.test_derive.4214 <= Set -derive.param1_trivial: wrong shape is_Pred -. It does not look like a unary parametricity translation of an inductive with no indexes. -is_empty_trivial : trivial empty is_empty - : trivial empty is_empty -is_unit_trivial : trivial unit is_unit - : trivial unit is_unit -is_peano_trivial : trivial peano is_peano - : trivial peano is_peano -is_option_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (option A) (is_option A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (option A) (is_option A P) -is_pair_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> -forall (B : Type) (Q : B -> Type), -trivial B Q -> trivial (pair A B) (is_pair A P B Q) - : forall (A : Type) (P : A -> Type), - trivial A P -> - forall (B : Type) (Q : B -> Type), - trivial B Q -> trivial (pair A B) (is_pair A P B Q) -is_seq_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (seq A) (is_seq A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (seq A) (is_seq A P) -is_rose_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (rose A) (is_rose A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (rose A) (is_rose A P) -is_zeta_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (zeta A) (is_zeta A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (zeta A) (is_zeta A P) -is_beta_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (beta A) (is_beta A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (beta A) (is_beta A P) -is_large_trivial : trivial large is_large - : trivial large is_large -is_prim_int_trivial : trivial prim_int is_prim_int - : trivial prim_int is_prim_int -is_prim_float_trivial : trivial prim_float is_prim_float - : trivial prim_float is_prim_float -is_fo_record_trivial : trivial fo_record is_fo_record - : trivial fo_record is_fo_record -is_pa_record_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (pa_record A) (is_pa_record A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (pa_record A) (is_pa_record A P) -Pred.Pred_to_Predinv : forall T : RoseTree, Pred T -> Pred.Predinv T - : forall T : RoseTree, Pred T -> Pred.Predinv T -is_pr_record_trivial -: -forall (A : Type) (P : A -> Type), -trivial A P -> trivial (pr_record A) (is_pr_record A P) - : forall (A : Type) (P : A -> Type), - trivial A P -> trivial (pr_record A) (is_pr_record A P) -is_enum_trivial : trivial enum is_enum - : trivial enum is_enum -is_sigma_bool_trivial : trivial sigma_bool is_sigma_bool - : trivial sigma_bool is_sigma_bool -is_ord_trivial -: -forall (p : peano) (px : is_peano p), trivial (ord p) (is_ord p px) - : forall (p : peano) (px : is_peano p), trivial (ord p) (is_ord p px) -is_ord2_trivial -: -forall (p : peano) (px : is_peano p), trivial (ord2 p) (is_ord2 p px) - : forall (p : peano) (px : is_peano p), trivial (ord2 p) (is_ord2 p px) -is_val_trivial : trivial val is_val - : trivial val is_val -is_empty_inhab : full empty is_empty - : full empty is_empty -is_unit_inhab : full unit is_unit - : full unit is_unit -is_peano_inhab : full peano is_peano - : full peano is_peano -is_option_inhab -: -forall (A : Type) (P : A -> Type), -full A P -> full (option A) (is_option A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (option A) (is_option A P) -is_pair_inhab -: -forall (A : Type) (P : A -> Type), -full A P -> -forall (B : Type) (Q : B -> Type), -full B Q -> full (pair A B) (is_pair A P B Q) - : forall (A : Type) (P : A -> Type), - full A P -> - forall (B : Type) (Q : B -> Type), - full B Q -> full (pair A B) (is_pair A P B Q) -is_seq_inhab -: -forall (A : Type) (P : A -> Type), full A P -> full (seq A) (is_seq A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (seq A) (is_seq A P) -is_rose_inhab -: -forall (A : Type) (P : A -> Type), full A P -> full (rose A) (is_rose A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (rose A) (is_rose A P) -is_zeta_inhab -: -forall (A : Type) (P : A -> Type), full A P -> full (zeta A) (is_zeta A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (zeta A) (is_zeta A P) -is_beta_inhab -: -forall (A : Type) (P : A -> Type), full A P -> full (beta A) (is_beta A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (beta A) (is_beta A P) -is_large_inhab : full large is_large - : full large is_large -is_prim_int_inhab : full prim_int is_prim_int - : full prim_int is_prim_int -is_prim_float_inhab : full prim_float is_prim_float - : full prim_float is_prim_float -is_fo_record_inhab : full fo_record is_fo_record - : full fo_record is_fo_record -is_pa_record_inhab -: -forall (A : Type) (P : A -> Type), -full A P -> full (pa_record A) (is_pa_record A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (pa_record A) (is_pa_record A P) -is_pr_record_inhab -: -forall (A : Type) (P : A -> Type), -full A P -> full (pr_record A) (is_pr_record A P) - : forall (A : Type) (P : A -> Type), - full A P -> full (pr_record A) (is_pr_record A P) -is_enum_inhab : full enum is_enum - : full enum is_enum -is_sigma_bool_inhab : full sigma_bool is_sigma_bool - : full sigma_bool is_sigma_bool -is_ord_inhab -: -forall (p : peano) (px : is_peano p), full (ord p) (is_ord p px) - : forall (p : peano) (px : is_peano p), full (ord p) (is_ord p px) -is_ord2_inhab -: -forall (p : peano) (px : is_peano p), full (ord2 p) (is_ord2 p px) - : forall (p : peano) (px : is_peano p), full (ord2 p) (is_ord2 p px) -is_val_inhab : full val is_val - : full val is_val -COQC tests/test_eqOK.v -COQC tests/test_eqbcorrect.v -wimpls.wimpls not a defined object. -wimpls.Kwi not a defined object. -Kwi 3 eq_refl - : wimpls -where -?rtree0 : [ |- rtree nat] -Query assignments: - C1 = «Nat.add» - C2 = «times» - X1 = tt - X2 = ff -Query assignments: - C1 = «x» -Query assignments: - XX = «elpi.tests.test_API2.xx» -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx» -empty_eq_OK : ok empty empty_eq - : ok empty empty_eq -unit_eq_OK : ok unit unit_eq - : ok unit unit_eq -peano_eq_OK : ok peano peano_eq - : ok peano peano_eq -option_eq_OK -: -forall (A : Type) (f : A -> A -> bool), -ok A f -> ok (option A) (option_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (option A) (option_eq A f) -pair_eq_OK -: -forall (A : Type) (f : A -> A -> bool), -ok A f -> -forall (B : Type) (g : B -> B -> bool), -ok B g -> ok (pair A B) (pair_eq A f B g) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> - forall (B : Type) (g : B -> B -> bool), - ok B g -> ok (pair A B) (pair_eq A f B g) -seq_eq_OK -: -forall (A : Type) (f : A -> A -> bool), ok A f -> ok (seq A) (seq_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (seq A) (seq_eq A f) -rose_eq_OK -: -forall (A : Type) (f : A -> A -> bool), ok A f -> ok (rose A) (rose_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (rose A) (rose_eq A f) -zeta_eq_OK -: -forall (A : Type) (f : A -> A -> bool), ok A f -> ok (zeta A) (zeta_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (zeta A) (zeta_eq A f) -beta_eq_OK -: -forall (A : Type) (f : A -> A -> bool), ok A f -> ok (beta A) (beta_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (beta A) (beta_eq A f) -prim_int_eq_OK - : ok prim_int prim_int_eq -fo_record_eq_OK : ok fo_record fo_record_eq - : ok fo_record fo_record_eq -pa_record_eq_OK -: -forall (A : Type) (f : A -> A -> bool), -ok A f -> ok (pa_record A) (pa_record_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (pa_record A) (pa_record_eq A f) -pr_record_eq_OK -: -forall (A : Type) (f : A -> A -> bool), -ok A f -> ok (pr_record A) (pr_record_eq A f) - : forall (A : Type) (f : A -> A -> bool), - ok A f -> ok (pr_record A) (pr_record_eq A f) -enum_eq_OK : ok enum enum_eq - : ok enum enum_eq -Query assignments: - XX = «elpi.tests.test_API2.xx2» +1 +1 +1.000000 +1.2 [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, @@ -13154,39 +12616,592 @@ 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] +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 +: +forall A : Type, +(A -> A -> bool) -> forall n : nat, Vector.t A n -> Vector.t A n -> bool + : forall A : Type, + (A -> A -> bool) -> + forall n : nat, Vector.t A n -> Vector.t A n -> bool +Vector.t_isk_nil : forall (A : Type) (n : nat), Vector.t A n -> bool + : forall (A : Type) (n : nat), Vector.t A n -> bool +Vector.t_isk_cons : forall (A : Type) (n : nat), Vector.t A n -> bool + : forall (A : Type) (n : nat), Vector.t A n -> bool +Vector.t_map +: +forall A B : Type, (A -> B) -> forall n : nat, Vector.t A n -> Vector.t B n + : forall A B : Type, + (A -> B) -> forall n : nat, Vector.t A n -> Vector.t B n +Vector.t_getk_cons1 +: +forall (A : Type) (n : nat), +A -> forall m : nat, Vector.t A m -> Vector.t A n -> A + : forall (A : Type) (n : nat), + A -> forall m : nat, Vector.t A m -> Vector.t A n -> A +Vector.t_getk_cons2 +: +forall (A : Type) (n : nat), +A -> forall m : nat, Vector.t A m -> Vector.t A n -> nat + : forall (A : Type) (n : nat), + A -> forall m : nat, Vector.t A m -> Vector.t A n -> nat +Vector.t_getk_cons3 +: +forall (A : Type) (n : nat), +A -> forall m : nat, Vector.t A m -> Vector.t A n -> {k : nat & Vector.t A k} + : forall (A : Type) (n : nat), + A -> + forall m : nat, + Vector.t A m -> Vector.t A n -> {k : nat & Vector.t A k} +Vector.is_t +: +forall A : Type, +(A -> Type) -> forall n : nat, is_nat n -> Vector.t A n -> Type + : forall A : Type, + (A -> Type) -> forall n : nat, is_nat n -> Vector.t A n -> Type +Vector.is_nil +: +forall (A : Type) (PA : A -> Type), Vector.is_t A PA 0 is_O (Vector.nil A) + : forall (A : Type) (PA : A -> Type), + Vector.is_t A PA 0 is_O (Vector.nil A) +Vector.is_cons +: +forall (A : Type) (PA : A -> Type) (a : A), +PA a -> +forall (n : nat) (Pn : is_nat n) (H : Vector.t A n), +Vector.is_t A PA n Pn H -> +Vector.is_t A PA (S n) (is_S n Pn) (Vector.cons A a n H) + : forall (A : Type) (PA : A -> Type) (a : A), + PA a -> + forall (n : nat) (Pn : is_nat n) (H : Vector.t A n), + Vector.is_t A PA n Pn H -> + Vector.is_t A PA (S n) (is_S n Pn) (Vector.cons A a n H) +Vector.is_t_functor +: +forall (A : Type) (PA QA : A -> Type), +(forall x : A, PA x -> QA x) -> +forall (n : nat) (nR : is_nat n) (v : Vector.t A n), +Vector.is_t A PA n nR v -> Vector.is_t A QA n nR v + : forall (A : Type) (PA QA : A -> Type), + (forall x : A, PA x -> QA x) -> + forall (n : nat) (nR : is_nat n) (v : Vector.t A n), + Vector.is_t A PA n nR v -> Vector.is_t A QA n nR v +Vector.t_induction +: +forall (A : Type) (PA : A -> Type) + (P : forall n : nat, is_nat n -> Vector.t A n -> Type), +P 0 is_O (Vector.nil A) -> +(forall a : A, + PA a -> + forall (m : nat) (mR : is_nat m) (v : Vector.t A m), + P m mR v -> P (S m) (is_S m mR) (Vector.cons A a m v)) -> +forall (n : nat) (nR : is_nat n) (v : Vector.t A n), +Vector.is_t A PA n nR v -> P n nR v + : forall (A : Type) (PA : A -> Type) + (P : forall n : nat, is_nat n -> Vector.t A n -> Type), + P 0 is_O (Vector.nil A) -> + (forall a : A, + PA a -> + forall (m : nat) (mR : is_nat m) (v : Vector.t A m), + P m mR v -> P (S m) (is_S m mR) (Vector.cons A a m v)) -> + forall (n : nat) (nR : is_nat n) (v : Vector.t A n), + Vector.is_t A PA n nR v -> P n nR v +Vector.t_tag : forall (A : Type) (i : nat), Vector.t A i -> BinNums.positive + : 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 +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 + : Type -> BinNums.positive -> Type +XXX.rtree_fields +: +forall (A : Type) (l : rtree A), XXX.rtree_fields_t A (XXX.rtree_tag A l) + : forall (A : Type) (l : rtree A), + XXX.rtree_fields_t A (XXX.rtree_tag A l) +XXX.rtree_construct +: +forall (A : Type) (p : BinNums.positive), +XXX.rtree_fields_t A p -> option (rtree A) + : forall (A : Type) (p : BinNums.positive), + XXX.rtree_fields_t A p -> option (rtree A) +XXX.rtree_constructP +: +forall (A : Type) (l : rtree A), +XXX.rtree_construct A (XXX.rtree_tag A l) (XXX.rtree_fields A l) = Some l + : forall (A : Type) (l : rtree A), + XXX.rtree_construct A (XXX.rtree_tag A l) (XXX.rtree_fields A l) = + Some l +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 +derive.param1_trivial: wrong shape is_triv +. It does not look like a unary parametricity translation of an inductive with no indexes. +triv.induction +: +forall P : forall H : Coverage.unit, is_unit H -> triv H -> Prop, +(forall (t : Coverage.unit) (Pt : is_unit t), P t Pt (one t)) -> +(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 + : forall P : forall H : Coverage.unit, is_unit H -> triv H -> Prop, + (forall (t : Coverage.unit) (Pt : is_unit t), P t Pt (one t)) -> + (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 +Debug: Cannot enforce elpi.apps.derive.tests.test_derive.4214 <= Set +eq_axiom_tt : eq_axiom_at unit unit_eq tt + : eq_axiom_at unit unit_eq tt +eq_axiom_Zero : eq_axiom_at peano peano_eq Zero + : eq_axiom_at peano peano_eq Zero +eq_axiom_Succ +: +forall y : peano, +eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) + : forall y : peano, + eq_axiom_at peano peano_eq y -> eq_axiom_at peano peano_eq (Succ y) +eq_axiom_None +: +forall (A : Type) (f : eq_test A), +eq_axiom_at (option A) (option_eq A f) (None A) + : forall (A : Type) (f : eq_test A), + eq_axiom_at (option A) (option_eq A f) (None A) +eq_axiom_Some +: +forall (A : Type) (f : eq_test A) (x : A), +eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) + : forall (A : Type) (f : eq_test A) (x : A), + eq_axiom_at A f x -> eq_axiom_at (option A) (option_eq A f) (Some A x) +eq_axiom_Comma +: +forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), +eq_axiom_at A f x -> +forall y : B, +eq_axiom_at B g y -> eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) + : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B) (x : A), + eq_axiom_at A f x -> + forall y : B, + eq_axiom_at B g y -> + eq_axiom_at (pair A B) (pair_eq A f B g) (Comma A B x y) +eq_axiom_Nil +: +forall (A : Type) (f : eq_test A), eq_axiom_at (seq A) (seq_eq A f) (Nil A) + : forall (A : Type) (f : eq_test A), + eq_axiom_at (seq A) (seq_eq A f) (Nil A) +eq_axiom_Cons +: +forall (A : Type) (f : eq_test A) (x : A), +eq_axiom_at A f x -> +forall xs : seq A, +eq_axiom_at (seq A) (seq_eq A f) xs -> +eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) + : forall (A : Type) (f : eq_test A) (x : A), + eq_axiom_at A f x -> + forall xs : seq A, + eq_axiom_at (seq A) (seq_eq A f) xs -> + eq_axiom_at (seq A) (seq_eq A f) (Cons A x xs) +eq_axiom_Leaf +: +forall (A : Type) (f : eq_test A) (a : A), +eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) + : forall (A : Type) (f : eq_test A) (a : A), + eq_axiom_at A f a -> eq_axiom_at (rose A) (rose_eq A f) (Leaf A a) +eq_axiom_Node +: +forall (A : Type) (f : eq_test A) (l : seq (rose A)), +eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> +eq_axiom_at (rose A) (rose_eq A f) (Node A l) + : forall (A : Type) (f : eq_test A) (l : seq (rose A)), + eq_axiom_at (seq (rose A)) (seq_eq (rose A) (rose_eq A f)) l -> + eq_axiom_at (rose A) (rose_eq A f) (Node A l) +eq_axiom_Envelope + : forall (Sender : Type) (f : eq_test Sender) (x : Sender), + eq_axiom_at Sender f x -> + forall x0 : Sender, + eq_axiom_at Sender f x0 -> + forall x1 : zeta Sender, + eq_axiom_on (zeta Sender) (zeta_eq Sender f) (Envelope Sender x x0) x1 +eq_axiom_Redex + : forall (A : Type) (f : eq_test A) (x : A), + eq_axiom_at A f x -> + forall x0 : beta A, eq_axiom_on (beta A) (beta_eq A f) (Redex A x) x0 +eq_axiom_PI + : forall x : PrimInt63.int, + eq_axiom_at PrimInt63.int PrimInt63.eqb x -> + forall x0 : prim_int, eq_axiom_on prim_int prim_int_eq (PI x) x0 +eq_axiom_PF + : forall x : PrimFloat.float, + eq_axiom_at PrimFloat.float PrimFloat.eqb x -> + forall x0 : prim_float, eq_axiom_on prim_float prim_float_eq (PF x) x0 +eq_axiom_Build_fo_record +: +forall x : peano, +eq_axiom_at peano peano_eq x -> +forall y : unit, +eq_axiom_at unit unit_eq y -> +eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} + : forall x : peano, + eq_axiom_at peano peano_eq x -> + forall y : unit, + eq_axiom_at unit unit_eq y -> + eq_axiom_at fo_record fo_record_eq {| f1 := x; f2 := y |} +eq_axiom_Build_pa_record +: +forall (A : Type) (f : eq_test A) (x : peano), +eq_axiom_at peano peano_eq x -> +forall y : A, +eq_axiom_at A f y -> +eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} + : forall (A : Type) (f : eq_test A) (x : peano), + eq_axiom_at peano peano_eq x -> + forall y : A, + eq_axiom_at A f y -> + eq_axiom_at (pa_record A) (pa_record_eq A f) {| f3 := x; f4 := y |} +eq_axiom_Build_pr_record +: +forall (A : Type) (f : eq_test A) (x : peano), +eq_axiom_at peano peano_eq x -> +forall y : A, +eq_axiom_at A f y -> +eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} + : forall (A : Type) (f : eq_test A) (x : peano), + eq_axiom_at peano peano_eq x -> + forall y : A, + eq_axiom_at A f y -> + eq_axiom_at (pr_record A) (pr_record_eq A f) {| pf3 := x; pf4 := y |} +eq_axiom_E1 : eq_axiom_at enum enum_eq E1 + : eq_axiom_at enum enum_eq E1 +eq_axiom_E2 : eq_axiom_at enum enum_eq E2 + : eq_axiom_at enum enum_eq E2 +eq_axiom_E3 : eq_axiom_at enum enum_eq E3 + : eq_axiom_at enum enum_eq E3 +COQC tests/test_eqcorrect.v +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 not a defined object. +wimpls.Kwi not a defined object. +Kwi 3 eq_refl + : wimpls +where +?rtree0 : [ |- rtree nat] +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] +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 = «Nat.add» + C2 = «times» + X1 = tt + X2 = ff +Query assignments: + C1 = «x» +is_empty_trivial : trivial empty is_empty + : trivial empty is_empty +is_unit_trivial : trivial unit is_unit + : trivial unit is_unit +is_peano_trivial : trivial peano is_peano + : trivial peano is_peano +is_option_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (option A) (is_option A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (option A) (is_option A P) +is_pair_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> +forall (B : Type) (Q : B -> Type), +trivial B Q -> trivial (pair A B) (is_pair A P B Q) + : forall (A : Type) (P : A -> Type), + trivial A P -> + forall (B : Type) (Q : B -> Type), + trivial B Q -> trivial (pair A B) (is_pair A P B Q) +is_seq_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (seq A) (is_seq A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (seq A) (is_seq A P) +is_rose_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (rose A) (is_rose A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (rose A) (is_rose A P) +is_zeta_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (zeta A) (is_zeta A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (zeta A) (is_zeta A P) +is_beta_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (beta A) (is_beta A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (beta A) (is_beta A P) +is_large_trivial : trivial large is_large + : trivial large is_large +is_prim_int_trivial : trivial prim_int is_prim_int + : trivial prim_int is_prim_int +is_prim_float_trivial : trivial prim_float is_prim_float + : trivial prim_float is_prim_float +is_fo_record_trivial : trivial fo_record is_fo_record + : trivial fo_record is_fo_record +is_pa_record_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (pa_record A) (is_pa_record A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (pa_record A) (is_pa_record A P) +is_pr_record_trivial +: +forall (A : Type) (P : A -> Type), +trivial A P -> trivial (pr_record A) (is_pr_record A P) + : forall (A : Type) (P : A -> Type), + trivial A P -> trivial (pr_record A) (is_pr_record A P) +is_enum_trivial : trivial enum is_enum + : trivial enum is_enum +is_sigma_bool_trivial : trivial sigma_bool is_sigma_bool + : trivial sigma_bool is_sigma_bool +is_ord_trivial +: +forall (p : peano) (px : is_peano p), trivial (ord p) (is_ord p px) + : forall (p : peano) (px : is_peano p), trivial (ord p) (is_ord p px) +is_ord2_trivial +: +forall (p : peano) (px : is_peano p), trivial (ord2 p) (is_ord2 p px) + : forall (p : peano) (px : is_peano p), trivial (ord2 p) (is_ord2 p px) +is_val_trivial : trivial val is_val + : trivial val is_val +Query assignments: + XX = «elpi.tests.test_API2.xx» +is_empty_inhab : full empty is_empty + : full empty is_empty +is_unit_inhab : full unit is_unit + : full unit is_unit +is_peano_inhab : full peano is_peano + : full peano is_peano +is_option_inhab +: +forall (A : Type) (P : A -> Type), +full A P -> full (option A) (is_option A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (option A) (is_option A P) +is_pair_inhab +: +forall (A : Type) (P : A -> Type), +full A P -> +forall (B : Type) (Q : B -> Type), +full B Q -> full (pair A B) (is_pair A P B Q) + : forall (A : Type) (P : A -> Type), + full A P -> + forall (B : Type) (Q : B -> Type), + full B Q -> full (pair A B) (is_pair A P B Q) +is_seq_inhab +: +forall (A : Type) (P : A -> Type), full A P -> full (seq A) (is_seq A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (seq A) (is_seq A P) +is_rose_inhab +: +forall (A : Type) (P : A -> Type), full A P -> full (rose A) (is_rose A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (rose A) (is_rose A P) +is_zeta_inhab +: +forall (A : Type) (P : A -> Type), full A P -> full (zeta A) (is_zeta A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (zeta A) (is_zeta A P) +is_beta_inhab +: +forall (A : Type) (P : A -> Type), full A P -> full (beta A) (is_beta A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (beta A) (is_beta A P) +is_large_inhab : full large is_large + : full large is_large +is_prim_int_inhab : full prim_int is_prim_int + : full prim_int is_prim_int +is_prim_float_inhab : full prim_float is_prim_float + : full prim_float is_prim_float +is_fo_record_inhab : full fo_record is_fo_record + : full fo_record is_fo_record +is_pa_record_inhab +: +forall (A : Type) (P : A -> Type), +full A P -> full (pa_record A) (is_pa_record A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (pa_record A) (is_pa_record A P) +is_pr_record_inhab +: +forall (A : Type) (P : A -> Type), +full A P -> full (pr_record A) (is_pr_record A P) + : forall (A : Type) (P : A -> Type), + full A P -> full (pr_record A) (is_pr_record A P) +is_enum_inhab : full enum is_enum + : full enum is_enum +is_sigma_bool_inhab : full sigma_bool is_sigma_bool + : full sigma_bool is_sigma_bool +is_ord_inhab +: +forall (p : peano) (px : is_peano p), full (ord p) (is_ord p px) + : forall (p : peano) (px : is_peano p), full (ord p) (is_ord p px) +is_ord2_inhab +: +forall (p : peano) (px : is_peano p), full (ord2 p) (is_ord2 p px) + : forall (p : peano) (px : is_peano p), full (ord2 p) (is_ord2 p px) +is_val_inhab : full val is_val + : full val is_val +COQC tests/test_eqOK.v +COQC tests/test_eqbcorrect.v +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx» +Query assignments: + XX = «elpi.tests.test_API2.xx2» Query assignments: C1 = «x» M = «elpi.tests.test_API2.xx2» +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx3» +empty_eq_OK : ok empty empty_eq + : ok empty empty_eq +unit_eq_OK : ok unit unit_eq + : ok unit unit_eq +peano_eq_OK : ok peano peano_eq + : ok peano peano_eq +option_eq_OK +: +forall (A : Type) (f : A -> A -> bool), +ok A f -> ok (option A) (option_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (option A) (option_eq A f) +pair_eq_OK +: +forall (A : Type) (f : A -> A -> bool), +ok A f -> +forall (B : Type) (g : B -> B -> bool), +ok B g -> ok (pair A B) (pair_eq A f B g) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> + forall (B : Type) (g : B -> B -> bool), + ok B g -> ok (pair A B) (pair_eq A f B g) +seq_eq_OK +: +forall (A : Type) (f : A -> A -> bool), ok A f -> ok (seq A) (seq_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (seq A) (seq_eq A f) +rose_eq_OK +: +forall (A : Type) (f : A -> A -> bool), ok A f -> ok (rose A) (rose_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (rose A) (rose_eq A f) +zeta_eq_OK +: +forall (A : Type) (f : A -> A -> bool), ok A f -> ok (zeta A) (zeta_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (zeta A) (zeta_eq A f) +beta_eq_OK +: +forall (A : Type) (f : A -> A -> bool), ok A f -> ok (beta A) (beta_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (beta A) (beta_eq A f) +prim_int_eq_OK + : ok prim_int prim_int_eq +fo_record_eq_OK : ok fo_record fo_record_eq + : ok fo_record fo_record_eq +pa_record_eq_OK +: +forall (A : Type) (f : A -> A -> bool), +ok A f -> ok (pa_record A) (pa_record_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (pa_record A) (pa_record_eq A f) +pr_record_eq_OK +: +forall (A : Type) (f : A -> A -> bool), +ok A f -> ok (pr_record A) (pr_record_eq A f) + : forall (A : Type) (f : A -> A -> bool), + ok A f -> ok (pr_record A) (pr_record_eq A f) +enum_eq_OK : ok enum enum_eq + : ok enum enum_eq dlist_eqOK : forall (A : Type) (f : A -> A -> bool), ok A f -> ok (dlist A) (dlist_eq A f) : forall (A : Type) (f : A -> A -> bool), ok A f -> ok (dlist A) (dlist_eq A f) Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx3» -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 -Query assignments: _uvk_1_ = X0 _uvk_2_ = X1 Syntactic constraints: @@ -13230,8 +13245,50 @@ Query assignments: Spilled_1 = «elpi.tests.test_API2.T» +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 Query assignments: GR = const const EXN PRINTING: Not_found +Query assignments: + Spilled_1 = «elpi.tests.test_API2.F» + Spilled_2 = «elpi.tests.test_API2.X» +«elpi.tests.test_API2.G» +Query assignments: + G = «elpi.tests.test_API2.G» +Module G : Sig Definition id : X.T -> X.T. End := (F X) + +Query assignments: + Spilled_1 = «elpi.tests.test_API2.F» + Spilled_2 = «elpi.tests.test_API2.X» +«elpi.tests.test_API2.H» +Query assignments: + H = «elpi.tests.test_API2.H» +Module H : Sig Definition id : nat -> nat. End := (F X) + +Query assignments: + Spilled_1 = «elpi.tests.test_API2.T» +Query assignments: + GR = const const EXN PRINTING: Not_found +Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End 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 @@ -13250,29 +13307,28 @@ Bool.reflect (o1 = o2) (ord_eqb n n o1 o2) alias_eqb_OK : forall x y : alias, Bool.reflect (x = y) (alias_eqb x y) : forall x y : alias, Bool.reflect (x = y) (alias_eqb x y) +Query assignments: + Spilled_1 = «elpi.tests.test_API2.FT» + Spilled_2 = «elpi.tests.test_API2.X» make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/derive' make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/eltac' Using coq found in /usr/bin//, from COQBIN or PATH Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory COQDEP VFILES +«elpi.tests.test_API2.GT» Query assignments: - Spilled_1 = «elpi.tests.test_API2.F» - Spilled_2 = «elpi.tests.test_API2.X» -«elpi.tests.test_API2.G» + G = «elpi.tests.test_API2.GT» +Module Type GT = Sig Parameter idT : X.T -> X.T. End Query assignments: - G = «elpi.tests.test_API2.G» -Module G : Sig Definition id : X.T -> X.T. End := (F X) - + Spilled_1 = «elpi.tests.test_API2.FT» + Spilled_2 = «elpi.tests.test_API2.X» COQC tests/test_assumption.v COQC tests/test_constructor.v COQC tests/test_intro.v COQC tests/test_clear.v -COQC tests/test_fail.v COQC tests/test_discriminate.v -Query assignments: - Spilled_1 = «elpi.tests.test_API2.F» - Spilled_2 = «elpi.tests.test_API2.X» +COQC tests/test_fail.v COQC tests/test_injection.v COQC tests/test_case.v COQC tests/test_generalize.v @@ -13282,102 +13338,16 @@ 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 +«elpi.tests.test_API2.HT» +Query assignments: + H = «elpi.tests.test_API2.HT» +Module Type HT = Sig Parameter idT : nat -> nat. End d : nat +Debug: elpi lets escape exception: not enough goals: 3 < 3 Debug: elpi lets escape exception: discriminate: the equation F of type K nat nat = K nat nat is trivial at the top level -«elpi.tests.test_API2.H» -Query assignments: - H = «elpi.tests.test_API2.H» -Module H : Sig Definition id : nat -> nat. End := (F X) - -Debug: elpi lets escape exception: not enough goals: 3 < 3 -Query assignments: - Spilled_1 = «elpi.tests.test_API2.T» -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/eltac' -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' -Using coq found in /usr/bin//, from COQBIN or PATH -Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory - -COQDEP VFILES -Query assignments: - GR = const const EXN PRINTING: Not_found -Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End -Query assignments: - Spilled_1 = «elpi.tests.test_API2.FT» - Spilled_2 = «elpi.tests.test_API2.X» -COQC tests/test_NES.v -COQC tests/test_NES_resolve.v -COQC tests/test_NES_perf.v -COQC tests/test_NES_perf_optimal.v -COQC tests/test_module_namespace.v -COQC tests/test_NES_lib.v -COQC examples/usage_NES.v -«elpi.tests.test_API2.GT» -Query assignments: - G = «elpi.tests.test_API2.GT» -Module Type GT = Sig Parameter idT : X.T -> X.T. End -Query assignments: - Spilled_1 = «elpi.tests.test_API2.FT» - Spilled_2 = «elpi.tests.test_API2.X» -Foo.x = 3 - : nat -This.Is.A.Long.Namespace.stuff = 1 - : nat - = 1 - : nat -Foo.x = 3 - : nat -Foo.x2 = 4 - : nat -This.Is.A.Long.Namespace.stuff = 2 - : nat - = 1 - : nat -eq_refl : Foo.x = 5 - : Foo.x = 5 -This_aux_1.This.Is.A.Long.Namespace.stuff -This.Is.A.Long.Namespace.more_stuff -This.Is.A.Long.Namespace.stuff -This_aux_1.This.Is.A.Long.Namespace.stuff : nat -This.Is.A.Long.Namespace.more_stuff : nat -This.Is.A.Long.Namespace.stuff : nat -stuff = 2 - : nat -default nat_def : nat - : nat -A.B.c : nat - -A.B.c is not universe polymorphic -A.B.c is transparent -Expands to: Constant elpi.apps.NES.tests.test_NES.A_aux_4.A.B.c -A1.B1.d : nat - -A1.B1.d is not universe polymorphic -A1.B1.d is transparent -Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_6.A1.B1.d -A1.B1.c : nat - -A1.B1.c is not universe polymorphic -A1.B1.c is transparent -Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_5.A1.B1.c -x = 5 - : nat -x2 = 4 - : nat -B1.c = 1 - : nat -B1.d = 1 - : nat -d = 1 - : nat -A2.B2.f = 2 - : nat -«elpi.tests.test_API2.HT» -Query assignments: - H = «elpi.tests.test_API2.HT» -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; }} @@ -13398,10 +13368,14 @@ WEAK CONSTRAINTS: -Cats.And.Dogs.x = 42 - : nat +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/eltac' +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' +Using coq found in /usr/bin//, from COQBIN or PATH File "./tests/test_API2.v", line 372, characters 3-201: Warning: constant test has no declared type. [elpi.typecheck,elpi,default] +Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory + +COQDEP VFILES Query assignments: _uvk_20_ = X0 _uvk_21_ = X0 @@ -13497,8 +13471,70 @@ COQC tests/test_require_bad_order.v -Finished transaction in 44.278 secs (29.978u,0.149s) (successful) -Finished transaction in 0.345 secs (0.338u,0.003s) (successful) +COQC tests/test_NES.v +COQC tests/test_NES_resolve.v +COQC tests/test_NES_perf.v +COQC tests/test_NES_perf_optimal.v +COQC tests/test_module_namespace.v +COQC tests/test_NES_lib.v +COQC examples/usage_NES.v +Foo.x = 3 + : nat +Foo.x = 3 + : nat +Foo.x2 = 4 + : nat +eq_refl : Foo.x = 5 + : Foo.x = 5 +A.B.c : nat + +A.B.c is not universe polymorphic +A.B.c is transparent +Expands to: Constant elpi.apps.NES.tests.test_NES.A_aux_4.A.B.c +This.Is.A.Long.Namespace.stuff = 1 + : nat + = 1 + : nat +A1.B1.d : nat + +A1.B1.d is not universe polymorphic +A1.B1.d is transparent +Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_6.A1.B1.d +A1.B1.c : nat + +A1.B1.c is not universe polymorphic +A1.B1.c is transparent +Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_5.A1.B1.c +This.Is.A.Long.Namespace.stuff = 2 + : nat + = 1 + : nat +x = 5 + : nat +x2 = 4 + : nat +B1.c = 1 + : nat +B1.d = 1 + : nat +This_aux_1.This.Is.A.Long.Namespace.stuff +This.Is.A.Long.Namespace.more_stuff +This.Is.A.Long.Namespace.stuff +d = 1 + : nat +This_aux_1.This.Is.A.Long.Namespace.stuff : nat +This.Is.A.Long.Namespace.more_stuff : nat +This.Is.A.Long.Namespace.stuff : nat +stuff = 2 + : nat +default nat_def : nat + : nat +A2.B2.f = 2 + : nat +Cats.And.Dogs.x = 42 + : nat +Finished transaction in 49.801 secs (49.268u,0.252s) (successful) +Finished transaction in 0.405 secs (0.404u,0.s) (successful) test coqdoc hyperlinks test link order make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/NES' @@ -13702,27 +13738,22 @@ COQC tests/patternFragment.v COQC tests/contextDeepHierarchy.v COQC tests/section_in_out.v -COQC tests/eqSimplDef.v COQC tests/injTest.v -COQC tests/stdppInj.v +COQC tests/eqSimplDef.v COQC tests/stdppInjClassic.v +COQC tests/stdppInj.v COQC tests/indt_to_inst.v COQC tests/bigTest.v COQC examples/tutorial.v +COQC tests/importOrder/f1.v The predicate of indt «C» is tc-C and search mode is deterministic -(Inst2 bool (fun (H : Type) (_ : nat) => ?Goal) - (fun (H : Type) (H0 _ : nat) - (H2 : Y ((fun (H1 : Type) (_ : nat) => ?Goal@{H:=H1}) H H0)) => H2)) -(Inst2 bool (fun (H : Type) (_ : nat) => H) - (fun (H : Type) (H0 _ : nat) - (H2 : Y ((fun (H1 : Type) (_ : nat) => H1) H H0)) => H2)) -(Inst2 bool (fun (H : Type) (_ : nat) => ?Goal) - (fun (H : Type) (H0 _ : nat) - (H2 : Y ((fun (H1 : Type) (_ : nat) => ?Goal@{H:=H1}) H H0)) => H2)) -(Inst2 bool (fun (_ : Type) (_ : nat) => bool) - (fun (H : Type) (H0 _ : nat) - (H2 : Y ((fun (_ : Type) (_ : nat) => bool) H H0)) => H2)) COQC tests/register/f2.v +Query assignments: + Len = 2 + Rules = [instance [] (const «Bool.Decidable_eq_bool») + (indt «DecidableClass.Decidable»), + instance [] (const «DecidableClass.Decidable_not») + (indt «DecidableClass.Decidable»)] Instances list for indt «Eqb» is: const «eqBool» const «eqProd» @@ -13731,26 +13762,31 @@ const «DecidableClass.Decidable_not» The predicate of indt «Eqb» is tc-tutorial.tc-Eqb and search mode is classic +(Inst2 bool (fun (H : Type) (_ : nat) => ?Goal) + (fun (H : Type) (H0 _ : nat) + (H2 : Y ((fun (H1 : Type) (_ : nat) => ?Goal@{H:=H1}) H H0)) => H2)) +(Inst2 bool (fun (H : Type) (_ : nat) => H) + (fun (H : Type) (H0 _ : nat) + (H2 : Y ((fun (H1 : Type) (_ : nat) => H1) H H0)) => H2)) Instances list for indt «Eqb» is: const «eqProd'» const «HB» const «HA» const «eqBool» const «eqProd» -Query assignments: - Len = 2 - Rules = [instance [] (const «Bool.Decidable_eq_bool») - (indt «DecidableClass.Decidable»), - instance [] (const «DecidableClass.Decidable_not») - (indt «DecidableClass.Decidable»)] +(Inst2 bool (fun (H : Type) (_ : nat) => ?Goal) + (fun (H : Type) (H0 _ : nat) + (H2 : Y ((fun (H1 : Type) (_ : nat) => ?Goal@{H:=H1}) H H0)) => H2)) +(Inst2 bool (fun (_ : Type) (_ : nat) => bool) + (fun (H : Type) (H0 _ : nat) + (H2 : Y ((fun (_ : Type) (_ : nat) => bool) H H0)) => H2)) COQC tests/register/f3.v -COQC tests/importOrder/f1.v -Received the following event [str I4, str A, str Export, int -1] COQC tests/importOrder/f2a.v -COQC tests/importOrder/f2b.v -COQC tests/importOrder/f3c.v COQC tests/importOrder/f3f.v +COQC tests/importOrder/f3c.v COQC tests/importOrder/f3g.v +COQC tests/importOrder/f2b.v +Received the following event [str I4, str A, str Export, int -1] File "./tests/bigTest.v", line 386, characters 0-87: Warning: A coercion will be introduced instead of an instance in future versions when using ':>' in 'Class' declarations. Replace ':>' with '::' (or @@ -13759,9 +13795,9 @@ #[global] for ':>' currently. Add an explicit #[global] attribute if you need to keep the current behavior. For example: "Class foo := #[global] baz :: bar." [future-coercion-class-field,deprecated-since-8.17,deprecated,default] +COQC tests/importOrder/f3d.v COQC tests/importOrder/f3a.v COQC tests/importOrder/f3b.v -COQC tests/importOrder/f3d.v COQC tests/importOrder/f3e.v File "./tests/bigTest.v", line 517, characters 0-133: Warning: A coercion will be introduced instead of an instance in future @@ -13805,7 +13841,7 @@ [unknown-option,default] File "./tests/test.v", line 2, characters 58-79: Warning: There is no debug flag "elpitime". [unknown-debug-flag,default] -Finished transaction in 0.016 secs (0.016u,0.s) (successful) +Finished transaction in 0.01 secs (0.01u,0.s) (successful) File "./tests/bigTest.v", line 1602, characters 0-302: Warning: A coercion will be introduced instead of an instance in future versions when using ':>' in 'Class' declarations. Replace ':>' with '::' (or @@ -13856,7 +13892,7 @@ create-stamp debian/debhelper-build-stamp dh_prep dh_auto_install --destdir=debian/libcoq-elpi/ - make -j42 install DESTDIR=/build/reproducible-path/coq-elpi-2.1.0/debian/libcoq-elpi AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" + make -j20 install DESTDIR=/build/reproducible-path/coq-elpi-2.1.0/debian/libcoq-elpi AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" make[1]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0' Using coq found in /usr/bin, from COQBIN or PATH ########################## installing plugin ############################ @@ -14193,12 +14229,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/3256756/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3256756/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/3673619 and its subdirectories -I: Current time: Wed Nov 26 05:10:38 -12 2025 -I: pbuilder-time-stamp: 1764177038 +I: removing directory /srv/workspace/pbuilder/3256756 and its subdirectories +I: Current time: Fri Oct 25 00:52:11 +14 2024 +I: pbuilder-time-stamp: 1729767131