Diff of the two buildlogs: -- --- b1/build.log 2024-05-17 15:42:26.273038161 +0000 +++ b2/build.log 2024-05-17 15:57:34.246394843 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu Jun 19 09:58:47 -12 2025 -I: pbuilder-time-stamp: 1750370327 +I: Current time: Sat May 18 05:42:29 +14 2024 +I: pbuilder-time-stamp: 1715960549 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-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/3147156/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2477925/tmp/hooks/D01_modify_environment starting +debug: Running on ionos1-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 May 17 15:42 /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/2477925/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2477925/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='unstable' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='c093a50004854116ab5d7efb5baa4730' - 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='3147156' - PS1='# ' - PS2='> ' + INVOCATION_ID=77208eaa71af4e5cb95f4b729ed911af + 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=2477925 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.lecAeBVj/pbuilderrc_0Xac --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.lecAeBVj/b1 --logfile b1/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+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.lecAeBVj/pbuilderrc_IUpg --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.lecAeBVj/b2 --logfile b2/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-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos15-amd64 6.6.13+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.6.13-1~bpo12+1 (2024-02-15) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Jun 18 14:05 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3147156/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 May 17 07:43 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2477925/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -260,7 +292,7 @@ Get: 76 http://deb.debian.org/debian unstable/main amd64 libppx-deriving-ocaml-dev amd64 5.2.1-4+b3 [798 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libre-ocaml-dev amd64 1.11.0-1+b1 [928 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libelpi-ocaml-dev amd64 1.18.2-1 [9602 kB] -Fetched 353 MB in 9s (39.7 MB/s) +Fetched 353 MB in 14s (24.7 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19719 files and directories currently installed.) @@ -524,8 +556,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Thu Jun 19 22:00:18 UTC 2025. -Universal Time is now: Thu Jun 19 22:00:18 UTC 2025. +Local time is now: Fri May 17 15:45:48 UTC 2024. +Universal Time is now: Fri May 17 15:45:48 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -599,7 +631,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/2477925/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/2477925/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 @@ -949,7 +985,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.026 secs (0.013u,0.s) (successful) +Finished transaction in 0.025 secs (0.016u,0.002s) (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 @@ -1123,7 +1159,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 ########################## @@ -1151,36 +1187,20 @@ COQC tests/test_arg_HOAS.v COQC tests/test_quotation.v COQC tests/test_vernacular1.v +make[4]: Nothing to be done for 'real-all'. COQC tests/test_tactic.v COQC tests/test_elaborator.v -make[4]: Nothing to be done for 'real-all'. COQC tests/test_ltac.v COQC tests/test_ltac3.v COQC tests/test_cache_async.v COQC tests/test_COQ_ELPI_ATTRIBUTES.v -COQC tests/perf_calls.v -COQC tests/test_ctx_cache.v -COQC tests/test_libobject_A.v -COQC tests/test_glob.v -COQC tests/test_link_perf.v -COQC tests/test_link_order1.v -COQC tests/test_link_order2.v -COQC tests/test_link_order3.v -COQC tests/test_link_order4.v -COQC tests/test_link_order5.v -COQC tests/test_link_order6.v -COQC tests/test_link_order7.v -COQC tests/test_link_order8.v -COQC tests/test_API_new_pred.v -COQC tests/test_link_order_import0.v -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[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 +?r : Reflexive R + : Reflexive R +where +?r : [ |- Reflexive R] test2 test1 str hello @@ -1191,17 +1211,11 @@ str Dear test1 too many arguments -COQC tests/test_libobject_B.v -?r : Reflexive R - : Reflexive R -where -?r : [ |- Reflexive R] -COQC tests/test_link_order_import1.v -COQC tests/test_link_order_import2.v 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 +Query assignments: + GR = const «myi» +myi : Reflexive R + : Reflexive R Query assignments: E = fun `n` (global (indt «nat»)) c0 \ fun `t` (app [global (const «T2»), c0]) c1 \ @@ -1238,108 +1252,10 @@ WEAK CONSTRAINTS: -Query assignments: - I = const «imp» -X2.imp : forall (T : Type) (x : T), x = x -> Prop - -X2.imp is not universe polymorphic -Arguments X2.imp T%type_scope x _ -Expands to: Constant elpi.tests.test_API_arguments.X2.imp -Query assignments: - 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'. - {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 */ -File "./tests/test_vernacular1.v", line 47, characters 2-11: -Warning: This command does not support this attribute: foo. -[unsupported-attributes,parsing,default] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 48, column 5, character 973:), - attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar)] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 48, column 5, character 973:, - get-option elpi.phase interp, get-option foo bar] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 52, column 0, character 1007:), - attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar), - attribute poly (leaf-str )] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 52, column 0, character 1007:, - get-option elpi.phase interp, get-option foo bar, get-option poly tt] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 53, column 0, character 1035:), - attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar), - attribute poly (leaf-str ), - attribute suppa (node [attribute duppa (leaf-str )])] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 53, column 0, character 1035:, - get-option elpi.phase interp, get-option foo bar, get-option poly tt] -Query assignments: - P = /build/reproducible-path/coq-elpi-2.1.0/elpi/elpi_elaborator.elpi -Coq version: 8.19.1 = 8 . 19 . 1 -Query assignments: - MA = 8 - MI = 19 - P = 1 - V = 8.19.1 -make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/locker' -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] -make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/coercion' +COQC tests/perf_calls.v +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 -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]) []) -z - : nat -COQC tests/test_libobject_C.v -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: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -1351,75 +1267,13 @@ fun `p` (global (indt «nat»)) c3 \ app [global (indc «S»), app [c0, c3, c2]]] GR = «Nat.add» + GRNat = indt «nat» + GRSucc = indc «S» + Nat = global (indt «nat») + Succ = global (indc «S») TY = prod `n` (global (indt «nat»)) c0 \ prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -«elpi.tests.test_API_notations.abbr» -Query assignments: - A = «elpi.tests.test_API_notations.abbr» - _uvk_1_ = X0 - _uvk_2_ = c0 \ -X1 c0 - _uvk_3_ = c0 \ c1 \ -X2 c0 c1 -Syntactic constraints: - {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 - ?- evar (X2 c0 c1) (X3 c0 c1) (X2 c0 c1) /* suspended on X2 */ - {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 - ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API_notations.3»)) - (X3 c0 c1) /* suspended on X4, X3 */ - {c0} : decl c0 `x` X0 - ?- evar (X1 c0) (sort (typ «elpi.tests.test_API_notations.2»)) (X1 c0) /* suspended on X1 */ - evar (X0) (sort (typ «elpi.tests.test_API_notations.1»)) (X0) /* suspended on X0 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_notations.3 elpi.tests.test_API_notations.2 - elpi.tests.test_API_notations.1} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α1 - α2 - α3 -WEAK CONSTRAINTS: - - -Notation abbr _elpi_ctx_entry_2_was_x_ _elpi_ctx_entry_1_ := - (_elpi_ctx_entry_2_was_x_ = _elpi_ctx_entry_2_was_x_) -Expands to: Notation elpi.tests.test_API_notations.abbr -4 = 4 - : Prop -Query assignments: - E = 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 -d1 - : nat -d2 - : nat -i1 - : Prop -i2 - : Prop -k1 - : i1 -k2 - : i2 -r1 - : Set -r2 - : Type -f1 - : r1 -> nat -f2 - : r2 -> nat +COQC tests/test_ctx_cache.v Query assignments: L = [gref (indt «Empty_set»), gref (const «Empty_set_rect»), gref (const «Empty_set_ind»), gref (const «Empty_set_rec»), @@ -1468,352 +1322,14 @@ gref (const «IDProp»), gref (const «idProp»)] MP = «Coq.Init.Datatypes» Query assignments: -make[4]: Nothing to be done for 'real-all'. - GR = const «myi» -myi : Reflexive R - : Reflexive R -global (indc «O») -app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - {c0 c1 c2 c3} : - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3) - (prod `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ - prod `j` (app [c1, c3]) c5 \ - app - [global (indt «ex»), app [c1, c3], - fun `a` (app [c1, c3]) c6 \ - app [global (indt «eq»), app [c1, c3], c6, c6]]) - (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ -Goal: - -n : nat -m : nat -o := m : nat -T : Type -x : T -> Type -h : o = m -w : T -====================== -(x w = Type -> x w -> exists a : x w, a = a) -Query assignments: - {c0 c1 c2 c3} : - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3) - (prod `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ - prod `j` (app [c1, c3]) c5 \ - app - [global (indt «ex»), app [c1, c3], - fun `a` (app [c1, c3]) c6 \ - app [global (indt «eq»), app [c1, c3], c6, c6]]) - (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ -Goal: - -n : nat -m : nat -o := m : nat -T : Type -x : T -> Type -h : o = m -w : T -====================== -(x w = Type -> x w -> exists a : x w, a = a) - Spilled_1 = const «foo» -foo 3 - : nat - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X2 c0 c1 c2 c3 c4 c5) - (app - [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, - X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ -Goal: - -n : nat -m : nat -o := m : nat -T : Type -x : T -> Type -h : o = m -w : T -e : x w = Type -j : x w -====================== -(?foo = ?foo) - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ - {c0 c1 c2 c3 c4 c5} : - decl c5 `j` (app [c1, c3]), - decl c4 `e` - (app - [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), - app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), - decl c3 `w` c0, - decl c2 `h` - (app - [global (indt «eq»), global (indt «nat»), global (const «o»), - global (const «m»)]), - decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), - decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) - ?- evar (X2 c0 c1 c2 c3 c4 c5) - (app - [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, - X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ -Goal: - -n : nat -m : nat -o := m : nat -T : Type -x : T -> Type -h : o = m -w : T -e : x w = Type -j : x w -====================== -(?foo = ?foo) -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 -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: - 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» - GRNat = indt «nat» - GRSucc = indc «S» - Nat = global (indt «nat») - Succ = global (indc «S») - TY = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -COQC tests/test_link_order_import3.v -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: - - -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: - - -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: - + I = const «imp» +X2.imp : forall (T : Type) (x : T), x = x -> Prop -hello world -Query assignments: - X = 3 -app [global (const «Nat.mul»), X0, X1] type +X2.imp is not universe polymorphic +Arguments X2.imp T%type_scope x _ +Expands to: Constant elpi.tests.test_API_arguments.X2.imp +COQC tests/test_libobject_A.v +make[4]: Nothing to be done for 'real-all'. File "./tests/test_API_TC_CS.v", line 24, characters 0-30: Warning: There is an hint extern in the typeclass db: @@ -1933,153 +1449,82 @@ tc-instance (const «Equivalence_Symmetric») (tc-priority-computed 1), tc-instance (const «PER_Symmetric») (tc-priority-given 3)] Query assignments: - X = «x» -fx : nat -> nat - : nat -> nat -it = elpi_subproof - : True -synterp [str X] -it : True + GR = «empty_nat» + TY = global (indt «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) -it is not universe polymorphic -it is transparent -Expands to: Constant elpi.tests.test_ltac.it -elpi_subproof = I - : True -elpi_subproof : True +SHELF:|| +FUTURE GOALS STACK: + || -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context -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 _)] -COQC tests/test_ltac2.v -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 _)])] -make[4]: Nothing to be done for 'real-all'. -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)] -c2 -global (indt «nat») +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 */ +File "./tests/test_vernacular1.v", line 47, characters 2-11: +Warning: This command does not support this attribute: foo. +[unsupported-attributes,parsing,default] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 48, column 5, character 973:), + attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar)] +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/locker' +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 48, column 5, character 973:, + get-option elpi.phase interp, get-option foo bar] +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/coercion' +Using coq found in /usr/bin//, from COQBIN or PATH +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 52, column 0, character 1007:), + attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar), + attribute poly (leaf-str )] +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 52, column 0, character 1007:, + get-option elpi.phase interp, get-option foo bar, get-option poly tt] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 53, column 0, character 1035:), + attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar), + attribute poly (leaf-str ), + attribute suppa (node [attribute duppa (leaf-str )])] +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 53, column 0, character 1035:, + get-option elpi.phase interp, get-option foo bar, get-option poly tt] z -nat + : nat Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z Query assignments: - _uvk_16_ = X0 - _uvk_17_ = c0 \ -X1 c0 - _uvk_18_ = c0 \ c1 \ -X2 c0 c1 - T = global (indt «nat») -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: - + CA = «a» + CB = «b» + CC = «c» + 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 +d : nat -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 -interp -[ctx-decl - (context-item A explicit (global (indt «nat»)) none c0 \ - context-item B explicit (global (indt «bool»)) none c1 \ context-end)] -(fun _ : nat => 2 = 2) 3 - : Prop -synterp [str X] -interp [str X] -synterp [int 1] -interp [int 1] -synterp [trm _] +d is not universe polymorphic +Expands to: Variable d +eq_refl : e2 = 3 + : e2 = 3 elpi.tests.test_API_module.X.i [elpi, tests, test_API_module, X, Y] [elpi, tests, test_API_module, X, Y] @@ -2099,319 +1544,149 @@ XYi = «X.Y.i» XYr = «X.Y.i_rect» Xi = «X.i» -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»)]]))])] -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 -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 - -a is not universe polymorphic -a is transparent -Expands to: Constant elpi.tests.test_synterp.X.a -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))] -opaque_3 : nat - -opaque_3 is not universe polymorphic -opaque_3 is opaque -Expands to: Constant elpi.tests.test_API_section.opaque_3 -raw: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «f1.u0»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -elab1: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «elpi.tests.test_API_elaborate.38»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -elab2: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «ind2.u0»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -raw: -record ind3 (sort (typ «elpi.tests.test_API_elaborate.41»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 - (sort (typ «elpi.tests.test_API_elaborate.40»)) c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -elab1: -record ind3 (sort (typ «elpi.tests.test_API_elaborate.42»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 - (sort (typ «elpi.tests.test_API_elaborate.43»)) c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -elab2: -record ind3 (sort (typ «ind3.u0»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 (sort (typ «ind3.u1»)) - c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -Module X := Struct Definition a : nat. End - -Module A := Struct Definition a : nat. End - -forall x : ind3, x -> Prop - : Type +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: - Spilled_1 = const «f» - Spilled_2 = const «f» - Spilled_3 = const «f» - Spilled_4 = const «f» - Spilled_5 = const «f» -f : forall [S : Type], S -> Prop - -f is not universe polymorphic -Arguments f [S]%type_scope _ - (where some original arguments have been renamed) -f is transparent -Expands to: Constant elpi.tests.test_API_arguments.f -f (S:=bool * bool) - : bool * bool -> Prop -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_vernacular2.v + 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») +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]) []) +«elpi.tests.test_API_notations.abbr» 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)] -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 + A = «elpi.tests.test_API_notations.abbr» + _uvk_1_ = X0 + _uvk_2_ = c0 \ +X1 c0 + _uvk_3_ = c0 \ c1 \ +X2 c0 c1 +Syntactic constraints: + {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 + ?- evar (X2 c0 c1) (X3 c0 c1) (X2 c0 c1) /* suspended on X2 */ + {c0 c1} : decl c1 `y` (X1 c0), decl c0 `x` X0 + ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API_notations.3»)) + (X3 c0 c1) /* suspended on X4, X3 */ + {c0} : decl c0 `x` X0 + ?- evar (X1 c0) (sort (typ «elpi.tests.test_API_notations.2»)) (X1 c0) /* suspended on X1 */ + evar (X0) (sort (typ «elpi.tests.test_API_notations.1»)) (X0) /* suspended on X0 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_notations.3 elpi.tests.test_API_notations.2 + elpi.tests.test_API_notations.1} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α1 + α2 + α3 +WEAK CONSTRAINTS: + -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context +Notation abbr _elpi_ctx_entry_2_was_x_ _elpi_ctx_entry_1_ := + (_elpi_ctx_entry_2_was_x_ = _elpi_ctx_entry_2_was_x_) +Expands to: Notation elpi.tests.test_API_notations.abbr +4 = 4 + : Prop Query assignments: - B = fun `n` (global (indt «nat»)) c0 \ - app - [global (const «nat_ind»), - fun `n` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]], - let `_` - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app - [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) - (app - [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) - c1 \ c1, - fun `n` (global (indt «nat»)) c1 \ - fun `IHn` - (app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ - let `_` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c1], - app - [global (const «Nat.add»), app [global (indc «S»), c1], - global (indc «O»)]]) - (app - [global (const «f_equal_nat»), global (indt «nat»), - global (indc «S»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ - c3, c0] - GR = «plus_n_O» - RB = fun `n` (global (indt «nat»)) c0 \ - app - [global (const «nat_ind»), - fun `n` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]], - let `_` - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app - [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) - (app - [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) - c1 \ c1, - fun `n` (global (indt «nat»)) c1 \ - fun `IHn` - (app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ - let `_` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c1], - app - [global (const «Nat.add»), app [global (indc «S»), c1], - global (indc «O»)]]) - (app - [global (const «f_equal_nat»), global (indt «nat»), - global (indc «S»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ - c3, c0] + 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 \ - app - [global (indt «eq»), global (indt «nat»), c0, - app [global (const «Nat.add»), c0, global (indc «O»)]] + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») +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.38 elpi.tests.test_elaborator.37 - elpi.tests.test_elaborator.36 elpi.tests.test_elaborator.35 - elpi.tests.test_elaborator.34 elpi.tests.test_elaborator.33 - elpi.tests.test_elaborator.32 elpi.tests.test_elaborator.31 - elpi.tests.test_elaborator.30 elpi.tests.test_elaborator.29 - elpi.tests.test_elaborator.28 elpi.tests.test_elaborator.27 - elpi.tests.test_elaborator.26 elpi.tests.test_elaborator.25 - elpi.tests.test_elaborator.24} |= - Set <= eq.u0 - Set <= Coq.Init.Logic.11 - Set <= elpi.tests.test_elaborator.24 - Set <= elpi.tests.test_elaborator.28 - Set <= elpi.tests.test_elaborator.32 - elpi.tests.test_elaborator.24 <= elpi.tests.test_elaborator.26 - elpi.tests.test_elaborator.25 <= elpi.tests.test_elaborator.26 - elpi.tests.test_elaborator.26 <= elpi.tests.test_elaborator.27 - elpi.tests.test_elaborator.28 <= elpi.tests.test_elaborator.30 - elpi.tests.test_elaborator.29 <= elpi.tests.test_elaborator.30 - elpi.tests.test_elaborator.30 <= elpi.tests.test_elaborator.31 - elpi.tests.test_elaborator.32 <= elpi.tests.test_elaborator.34 - elpi.tests.test_elaborator.33 <= elpi.tests.test_elaborator.34 - elpi.tests.test_elaborator.34 <= elpi.tests.test_elaborator.35 - elpi.tests.test_elaborator.36 <= elpi.tests.test_elaborator.37 - elpi.tests.test_elaborator.37 <= elpi.tests.test_elaborator.38 + {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: @@ -2421,32 +1696,40 @@ WEAK CONSTRAINTS: +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 = «empty_nat» - TY = global (indt «nat») -c2 -global (indt «nat») -z -nat + 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)] +Coq version: 8.19.1 = 8 . 19 . 1 Query assignments: - Spilled_1 = c0 \ c1 \ c2 \ -nat - Spilled_2 = c0 \ c1 \ c2 \ -z - T = global (indt «nat») -fun `H` X0 c0 \ - app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] + MA = 8 + MI = 19 + P = 1 + V = 8.19.1 +COQC tests/test_glob.v 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 -[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»)) - [])] + Spilled_1 = const «foo» +foo 3 + : nat +H +[nabla c1 \ + seal + (goal + [decl c1 `H` + (prod `b` + (prod `b` (global (indt «bool»)) c2 \ + app [global (indt «eq»), global (indt «bool»), c2, c2]) c2 \ + global (indt «True»))] (X0 c1) + (prod `b` (global (indt «bool»)) c2 \ + app [global (indt «eq»), global (indt «bool»), c2, c2]) (X1 c1) [])] ----<<---- enter: coq.say raw: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -2622,6 +1905,7 @@ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) Illtyped inductive declaration +make[4]: Nothing to be done for 'real-all'. ----<<---- enter: coq.say typed: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -2685,12 +1969,6 @@ arity (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Query assignments: - I = «Y.i» - ID = j - J = «Y.j» - MP = «elpi.tests.test_API_module.Y» - P = [elpi, tests, test_API_module, Y] ---->>---- exit: coq.say typed: (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ @@ -2760,7 +2038,6 @@ (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X0 -make[4]: Nothing to be done for 'real-all'. ---->>---- exit: coq.env.add-indt (parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ @@ -2807,20 +2084,6 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -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] ----<<---- enter: coq.say raw: (parameter A1 maximal X0 c0 \ @@ -2935,27 +2198,6 @@ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X9) Illtyped inductive declaration -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: - - ---->>---- exit: std.assert-ok! (coq.elaborate-indt-decl-skeleton @@ -3167,9 +2409,6 @@ (prod `_` c0 c5 \ app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) X10 -Debug: -elpi lets escape exception: The term global (indc X0) cannot be represented in Coq since its gref part is illformed -unknown_gref ---->>---- exit: coq.env.add-indt (parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ @@ -3220,286 +2459,330 @@ ?B1 : [ |- Type] ?B2 : [ |- Type] ?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -A -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 -Query assignments: - Mp_ta = «elpi.tests.test_API_module.TA» -Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory - Query assignments: - Spilled_1 = const «f» -f : forall [S : Type], S -> Prop - -f is not universe polymorphic -Arguments f [S]%type_scope / _ - (where some original arguments have been renamed) -The reduction tactics unfold f when applied to 1 argument -f is transparent -Expands to: Constant elpi.tests.test_API_arguments.f -f (S:=bool * bool) - : bool * bool -> Prop - = fun x : bool => x = x - : bool -> Prop -Query assignments: - GR = indt «RewriteRelation» -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»)]] + GR1 = indc «Vector.nil» + GR2 = indt «nat» + GR3 = const «A» +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: - 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 \ + 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_9_ = c0 \ c1 \ -X8 c0 c1 + _uvk_2_ = c0 \ c1 \ +X3 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 */ + 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.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 + {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.12 + elpi.tests.test_quotation.3 SORTS: - α3 - α4 := Type - α5 - α6 - α7 - α8 - α9 + α1 + α2 WEAK CONSTRAINTS: -COQDEP VFILES -File "./tests/test_vernacular2.v", line 9, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -File "./tests/test_vernacular2.v", line 10, characters 2-17: -Warning: This command does not support this attribute: fwd_compat_attr. -[unsupported-attributes,parsing,default] -Query assignments: - Spilled_1 = «elpi.tests.test_API_notations.abbr2» -Query q X0 -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»)) + {c0 c1 c2 c3} : + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3) + (prod `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ + prod `j` (app [c1, c3]) c5 \ + app + [global (indt «ex»), app [c1, c3], + fun `a` (app [c1, c3]) c6 \ + app [global (indt «eq»), app [c1, c3], c6, c6]]) + (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ +Goal: +make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.1.0/apps/coercion' +n : nat +m : nat +o := m : nat +T : Type +x : T -> Type +h : o = m +w : T +====================== +(x w = Type -> x w -> exists a : x w, a = a) Query assignments: - R = fun `x` X0 c0 \ c0 - T = prod `x` X0 c0 \ X0 - _uvk_87_ = X1 + _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 X2 (sort (typ «elpi.tests.test_elaborator.40»)) X0 /* suspended on X2, 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_elaborator.42 elpi.tests.test_elaborator.41 - elpi.tests.test_elaborator.40 elpi.tests.test_elaborator.39} |= - elpi.tests.test_elaborator.39 <= elpi.tests.test_elaborator.41 - elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.39 - elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.41 - elpi.tests.test_elaborator.41 <= elpi.tests.test_elaborator.42 + {elpi.tests.test_API_notations.6 elpi.tests.test_API_notations.5 + elpi.tests.test_API_notations.4} |= ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: SORTS: - + α4 + α5 + α6 WEAK CONSTRAINTS: -Query r X0 -Result r 1 -Illegal application (Non-functional construction): -The expression "Prop" of type "Type" -cannot be applied to the term - "Prop" : "Type" -Query assignments: - E = Illegal application (Non-functional construction): -The expression "Prop" of type "Type" -cannot be applied to the term - "Prop" : "Type" -Query assignments: - GR1 = indc «Vector.nil» - GR2 = indt «nat» - GR3 = const «A» -«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» -a - : nat -L= [p 1] +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 +make[2]: Entering directory '/build/reproducible-path/coq-elpi-2.1.0/apps/cs' + {c0 c1 c2 c3} : + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c4 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3) + (prod `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]) c4 \ + prod `j` (app [c1, c3]) c5 \ + app + [global (indt «ex»), app [c1, c3], + fun `a` (app [c1, c3]) c6 \ + app [global (indt «eq»), app [c1, c3], c6, c6]]) + (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ +Goal: + +n : nat +m : nat +o := m : nat +T : Type +x : T -> Type +h : o = m +w : T +====================== +(x w = Type -> x w -> exists a : x w, a = a) +Using coq found in /usr/bin//, from COQBIN or PATH + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X2 c0 c1 c2 c3 c4 c5) + (app + [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, + X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ +Goal: + +n : nat +m : nat +o := m : nat +T : Type +x : T -> Type +h : o = m +w : T +e : x w = Type +j : x w +====================== +(?foo = ?foo) + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X0 c0 c1 c2 c3 c4 c5) (app [c1, c3]) (X1 c0 c1 c2 c3 c4 c5) /* suspended on X0, X1 */ + {c0 c1 c2 c3 c4 c5} : + decl c5 `j` (app [c1, c3]), + decl c4 `e` + (app + [global (indt «eq»), sort (typ «elpi.tests.test_tactic.2»), + app [c1, c3], sort (typ «elpi.tests.test_tactic.3»)]), + decl c3 `w` c0, + decl c2 `h` + (app + [global (indt «eq»), global (indt «nat»), global (const «o»), + global (const «m»)]), + decl c1 `x` (prod `y` c0 c6 \ sort (typ «elpi.tests.test_tactic.2»)), + decl c0 `T` (sort (typ «elpi.tests.test_tactic.1»)) + ?- evar (X2 c0 c1 c2 c3 c4 c5) + (app + [global (indt «eq»), app [c1, c3], X1 c0 c1 c2 c3 c4 c5, + X1 c0 c1 c2 c3 c4 c5]) (X3 c0 c1 c2 c3 c4 c5) /* suspended on X2, X3 */ +Goal: + +n : nat +m : nat +o := m : nat +T : Type +x : T -> Type +h : o = m +w : T +e : x w = Type +j : x w +====================== +(?foo = ?foo) 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» + 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: - {elpi.tests.test_API_module.11 A.i.u0} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_API_module.11 - A.i.u0 -SORTS: +SORTS: + α11 := Type 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 +Query assignments: + I = «Y.i» + ID = j + J = «Y.j» + MP = «elpi.tests.test_API_module.Y» + P = [elpi, tests, test_API_module, Y] +it = elpi_subproof + : True +it : True -A.z - : nat -A.i - : Type -*** [ A.i : Type ] -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_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 )] +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 +Query assignments: + GR = indt «RewriteRelation» +COQC tests/test_link_perf.v +Query assignments: + X = 3 +app [global (const «Nat.mul»), X0, X1] type +Query assignments: + Mp_ta = «elpi.tests.test_API_module.TA» +add_equal +Query assignments: + BO = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]] + GR = «Nat.add» + NGR = «add_equal» + Name = add_equal + S = add + Spilled_1 = add_equal + Spilled_2 = add_equal + TY = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») +add_equal : nat -> nat -> nat + +add_equal is not universe polymorphic +Arguments add_equal (n m)%nat_scope +add_equal is opaque +Expands to: Constant elpi.tests.test_API_env.add_equal +c2 +global (indt «nat») +z +nat +Query assignments: + Spilled_1 = c0 \ c1 \ c2 \ +nat + Spilled_2 = c0 \ c1 \ c2 \ +z + T = global (indt «nat») +hello world Query assignments: D = parameter A explicit (sort (typ «t.u0»)) c0 \ inductive t tt @@ -3619,7 +2902,6 @@ [global (indt «eq»), global (indt «nat»), app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) «foo» -B ----<<---- enter: coq.say raw: (record foo (sort (typ X0)) Build_foo @@ -3741,6 +3023,8 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) +Query assignments: + X = «x» raw: parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ parameter B explicit c0 c1 \ @@ -3901,6 +3185,8 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) X0 +fx : nat -> nat + : nat -> nat ---->>---- exit: coq.env.add-indt (parameter A explicit (sort (typ «foo.u0»)) c0 \ @@ -3921,68 +3207,252 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» +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: -Query assignments: - GR = indt «True» - T = sort (typ «elpi.tests.test_HOAS.3») - U = «elpi.tests.test_HOAS.3» -COQC tests/test_readme.v -COQC tests/test_derive_stdlib.v -COQC tests/test_param2.v -COQC tests/test_invert.v -COQC tests/test_idx2inv.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 examples/usage.v -COQC examples/readme.v -COQC tests/test_link_order9.v -Unable to unify "bool" with "nat". -Query assignments: - Msg = Unable to unify "bool" with "nat". -3 -Query assignments: - X = 3 - evar (X0) (global (indt «nat»)) X1 /* suspended on X0, X1 */ -X0 global (indt «nat») - evar (X2) (global (indt «nat»)) X3 /* suspended on X2, X3 */ -hello -eq_refl : one = 1 - : one = 1 -Query assignments: - E = app [global (indt «list»), global (const «C»)] - TY = sort (typ «elpi.tests.test_API_elaborate.58») + 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.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_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: - α22 := Type + α3 + α4 := Type + α5 + α6 + α7 + α8 + α9 WEAK CONSTRAINTS: +[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: - 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 + B = fun `n` (global (indt «nat»)) c0 \ + app + [global (const «nat_ind»), + fun `n` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]], + let `_` + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app + [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) + (app + [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) + c1 \ c1, + fun `n` (global (indt «nat»)) c1 \ + fun `IHn` + (app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ + let `_` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c1], + app + [global (const «Nat.add»), app [global (indc «S»), c1], + global (indc «O»)]]) + (app + [global (const «f_equal_nat»), global (indt «nat»), + global (indc «S»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ + c3, c0] + GR = «plus_n_O» +fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] +Query assignments: + RB = fun `n` (global (indt «nat»)) c0 \ + app + [global (const «nat_ind»), + fun `n` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]], + let `_` + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app + [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) + (app + [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) + c1 \ c1, + fun `n` (global (indt «nat»)) c1 \ + fun `IHn` + (app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ + let `_` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c1], + app + [global (const «Nat.add»), app [global (indc «S»), c1], + global (indc «O»)]]) + (app + [global (const «f_equal_nat»), global (indt «nat»), + global (indc «S»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ + c3, c0] + Spilled_1 = «elpi.tests.test_API_notations.abbr2» + TY = prod `n` (global (indt «nat»)) c0 \ + app + [global (indt «eq»), global (indt «nat»), c0, + app [global (const «Nat.add»), c0, global (indc «O»)]] Universe constraints: UNIVERSES: - {elpi.tests.test_elaborator.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 + {elpi.tests.test_elaborator.38 elpi.tests.test_elaborator.37 + elpi.tests.test_elaborator.36 elpi.tests.test_elaborator.35 + elpi.tests.test_elaborator.34 elpi.tests.test_elaborator.33 + elpi.tests.test_elaborator.32 elpi.tests.test_elaborator.31 + elpi.tests.test_elaborator.30 elpi.tests.test_elaborator.29 + elpi.tests.test_elaborator.28 elpi.tests.test_elaborator.27 + elpi.tests.test_elaborator.26 elpi.tests.test_elaborator.25 + elpi.tests.test_elaborator.24} |= + Set <= eq.u0 + Set <= Coq.Init.Logic.11 + Set <= elpi.tests.test_elaborator.24 + Set <= elpi.tests.test_elaborator.28 + Set <= elpi.tests.test_elaborator.32 + elpi.tests.test_elaborator.24 <= elpi.tests.test_elaborator.26 + elpi.tests.test_elaborator.25 <= elpi.tests.test_elaborator.26 + elpi.tests.test_elaborator.26 <= elpi.tests.test_elaborator.27 + elpi.tests.test_elaborator.28 <= elpi.tests.test_elaborator.30 + elpi.tests.test_elaborator.29 <= elpi.tests.test_elaborator.30 + elpi.tests.test_elaborator.30 <= elpi.tests.test_elaborator.31 + elpi.tests.test_elaborator.32 <= elpi.tests.test_elaborator.34 + elpi.tests.test_elaborator.33 <= elpi.tests.test_elaborator.34 + elpi.tests.test_elaborator.34 <= elpi.tests.test_elaborator.35 + elpi.tests.test_elaborator.36 <= elpi.tests.test_elaborator.37 + elpi.tests.test_elaborator.37 <= elpi.tests.test_elaborator.38 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -3992,86 +3462,132 @@ WEAK CONSTRAINTS: -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 -add_equal + T = fun `H` X0 c0 \ + app [global (indt «eq»), X1 c0, fun `x` X2 c1 \ c1, fun `x` X2 c1 \ c1] + _uvk_31_ = X2 Query assignments: - 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 + Spilled_1 = const «f» + Spilled_2 = const «f» + Spilled_3 = const «f» + Spilled_4 = const «f» + Spilled_5 = const «f» +f : forall [S : Type], S -> Prop -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 +f is not universe polymorphic +Arguments f [S]%type_scope _ + (where some original arguments have been renamed) +f is transparent +Expands to: Constant elpi.tests.test_API_arguments.f +f (S:=bool * bool) + : bool * bool -> Prop +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]))] +COQC tests/test_link_order1.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))] +make[4]: Nothing to be done for 'real-all'. +raw: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «f1.u0»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +elab1: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «elpi.tests.test_API_elaborate.38»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +elab2: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «ind2.u0»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +raw: +record ind3 (sort (typ «elpi.tests.test_API_elaborate.41»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 + (sort (typ «elpi.tests.test_API_elaborate.40»)) c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +elab1: +record ind3 (sort (typ «elpi.tests.test_API_elaborate.42»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 + (sort (typ «elpi.tests.test_API_elaborate.43»)) c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +elab2: +record ind3 (sort (typ «ind3.u0»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 (sort (typ «ind3.u1»)) + c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +forall x : ind3, x -> Prop + : Type 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 ] + GR = indt «True» +c2 +global (indt «nat») +z +nat Query assignments: - U = «elpi.tests.test_HOAS.4» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.4} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -test_inv : Type -> bool -> Type - : Type -> bool -> Type -K1_inv : forall (A : Type) (b : bool), b = true -> test_inv A b - : forall (A : Type) (b : bool), b = true -> test_inv A b -K2_inv -: -forall (A : Type) (b x : bool), -A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b - : forall (A : Type) (b x : bool), - A -> test_inv A (negb x) -> b = negb (negb x) -> test_inv A b -Inductive listR_inv (A : Type) (PA : A -> Type) (idx0 : list A) : Type := - nilR_inv : idx0 = nil -> listR_inv A PA idx0 - | consR_inv : forall a : A, - PA a -> - forall xs : list A, - listR_inv A PA xs -> - idx0 = (a :: xs)%list -> listR_inv A PA idx0. - -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 _ _ + 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/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 +«myfalse» +Query assignments: + F = indt «False» + GR = «myfalse» +myfalse + : False Query assignments: I = «foo» ----<<---- enter: @@ -4283,7 +3799,6 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) X7 -Finished transaction in 4.033 secs (2.452u,0.012s) (successful) ---->>---- exit: coq.env.add-indt (parameter A explicit (sort (typ «foo.u0»)) c0 \ @@ -4304,191 +3819,158 @@ prod `x` c0 c5 \ app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ end-record)) «foo» +COQC tests/test_link_order2.v 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» -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) + _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 ] +d1 + : nat +d2 + : nat +i1 + : Prop +i2 + : Prop +k1 + : i1 +k2 + : i2 +r1 + : Set +r2 + : Type +f1 + : r1 -> nat +f2 + : r2 -> nat +COQC tests/test_link_order3.v +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»)) -Arguments nth_R (T T)%type_scope T%function_scope - x0 x0 x0 (n n)%nat_scope n (l l)%list_scope l Query assignments: - 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») + 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_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_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: - α1 := Type - α2 := Type + WEAK CONSTRAINTS: -COQC tests/test_projK.v -COQC tests/test_derive.v -COQC tests/test_eq.v -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 -fun `x` X0 c0 \ app [X1, c0] +opaque_3 : nat + +opaque_3 is not universe polymorphic +opaque_3 is opaque +Expands to: Constant elpi.tests.test_API_section.opaque_3 Query assignments: - X = X1 - Y = fun `x` X0 c0 \ app [X1, c0] - _uvk_34_ = X0 + A = «elpi.tests.test_API_module.a» + MP_TA = «elpi.tests.test_API_module.TA» + TF = «elpi.tests.test_API_module.TF» +3 Query assignments: - U = «foo» + X = 3 +A +Query assignments: + Spilled_1 = «elpi.tests.test_API_notations.abbr2» +Query assignments: + Spilled_1 = const «f» +f : forall [S : Type], S -> Prop + +f is not universe polymorphic +Arguments f [S]%type_scope / _ + (where some original arguments have been renamed) +The reduction tactics unfold f when applied to 1 argument +f is transparent +Expands to: Constant elpi.tests.test_API_arguments.f +f (S:=bool * bool) + : bool * bool -> Prop + = fun x : bool => x = x + : bool -> Prop +COQC tests/test_link_order4.v +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: + + +COQC tests/test_link_order5.v +Debug: +elpi lets escape exception: The term global (indc X0) cannot be represented in Coq since its gref part is illformed Query assignments: I = «foo» -foo : nat - : nat -bar : bool -> nat - : bool -> nat +unknown_gref ----<<---- enter: coq.arity->term (parameter P explicit (sort (typ «elpi.tests.test_arg_HOAS.99»)) c0 \ @@ -4625,6 +4107,7 @@ (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ X7 c0 c1 c2) X9) illtyped definition +make[4]: Nothing to be done for 'real-all'. ---->>---- exit: std.assert-ok! (coq.elaborate-skeleton @@ -4779,11 +4262,123 @@ (record foo (sort prop) Build_foo (field [coercion off, canonical tt] bar (global (indt «True»)) c0 \ end-record)) «foo» +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 +Warning: ../../theories (used in -R or -Q) is not a subdirectory of the current directory + +Query assignments: + T = sort (typ «elpi.tests.test_HOAS.3») + U = «elpi.tests.test_HOAS.3» +Illegal application (Non-functional construction): +The expression "Prop" of type "Type" +cannot be applied to the term + "Prop" : "Type" +Query assignments: + E = Illegal application (Non-functional construction): +The expression "Prop" of type "Type" +cannot be applied to the term + "Prop" : "Type" +parameter T X0 (sort (typ X1)) c0 \ + record eq_class (sort (typ X2)) mk_eq_class + (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ + field X3 eq_proof + (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ + end-record) +Query assignments: + DECL = parameter T X0 (sort (typ «eq_class.u0»)) c0 \ + record eq_class (sort (typ «eq_class.u1»)) mk_eq_class + (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ + field X3 eq_proof + (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ + end-record) + GR = «eq_class» + _uvk_1_ = «eq_class.u0» + _uvk_2_ = «eq_class.u1» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {eq_class.u1 eq_class.u0} +FLEXIBLE UNIVERSES: + eq_class.u1 + eq_class.u0 +SORTS: + +WEAK CONSTRAINTS: + + +Record eq_class (T : Type@{eq_class.u0}) : Type@{eq_class.u1} := mk_eq_class + { eq_f : bool; eq_proof : eq_f = eq_f }. + +Arguments eq_class T%type_scope +Arguments mk_eq_class T%type_scope eq_f%bool_scope eq_proof +fun x : eq_class nat => x : bool + : eq_class nat -> bool +p <- eq_proof ( xxx ) +«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» Query assignments: GR = const «myc» eq_op myc t t : bool -Module Type TB = Funsig (A:TA) Sig End +COQDEP VFILES +B +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 ] +fun `x` X0 c0 \ app [X1, c0] +Query assignments: + X = X1 + Y = fun `x` X0 c0 \ app [X1, c0] + _uvk_34_ = X0 +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: + + +Query assignments: + MP_TA = «elpi.tests.test_API_module.TA» +Query assignments: + U = «elpi.tests.test_HOAS.4» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.4} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + fun `r` (global (indt «nat»)) c0 \ fun `p` (prod `y` (global (indt «nat»)) c1 \ @@ -4808,45 +4403,135 @@ prod `y` (global (indt «nat»)) c3 \ app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] -«myfalse» -Query assignments: - F = indt «False» - GR = «myfalse» -myfalse - : False 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) -sort (typ X0) +parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) + c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `x` (global (indt «nat»)) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c4, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]]) c6 \ + app [c2, c3, c4, c5])), + constructor a_k2 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] Query assignments: - _uvk_129_ = X0 + E = app [global (indt «list»), global (const «C»)] + TY = sort (typ «elpi.tests.test_API_elaborate.58») +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 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α22 := Type +WEAK CONSTRAINTS: + + Query assignments: - A = «elpi.tests.test_API_module.A» -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) + D = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) + c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `x` (global (indt «nat»)) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c4, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]]) c6 \ + app [c2, c3, c4, c5])), + constructor a_k2 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] + I = «inductive_nup.foo1» +foo1 ?A2 ?B1 ?B2 ?n : Type + : Type +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?n : [ |- nat] +a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 + : foo1 ?A2 ?B1 ?B2 3 +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +COQC tests/test_link_order6.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 + (field [canonical ff, coercion reversible] prim_eq_f + (global (indt «bool»)) c1 \ + field X1 prim_eq_proof + (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ + end-record) + GR = «prim_eq_class» + _uvk_3_ = «prim_eq_class.u0» + _uvk_4_ = «prim_eq_class.u1» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {prim_eq_class.u1 prim_eq_class.u0} +FLEXIBLE UNIVERSES: + prim_eq_class.u1 + prim_eq_class.u0 +SORTS: + +WEAK CONSTRAINTS: + -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 +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 *) +Unable to unify "bool" with "nat". +Query assignments: + Msg = Unable to unify "bool" with "nat". Query assignments: GR = indc «Ord» K = global (indc «Ord») @@ -4947,192 +4632,66 @@ WEAK CONSTRAINTS: -File "./tests/test_param2.v", line 85, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) - c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `x` (global (indt «nat»)) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c4, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]]) c6 \ - app [c2, c3, c4, c5])), - constructor a_k2 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] +Module Type TB = Funsig (A:TA) Sig End Query assignments: - D = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) - c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `x` (global (indt «nat»)) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c4, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]]) c6 \ - app [c2, c3, c4, c5])), - constructor a_k2 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] - I = «inductive_nup.foo1» -foo1 ?A2 ?B1 ?B2 ?n : Type - : Type -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?n : [ |- nat] -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»)] +1 + : nat +sort (typ X0) Query assignments: - T = global (indt «nat») - _uvk_5_ = global (indt «nat») - _uvk_6_ = global (indt «nat») -Universe constraints: -UNIVERSES: - {elpi.tests.test_API_typecheck.9 elpi.tests.test_API_typecheck.8 - elpi.tests.test_API_typecheck.7 elpi.tests.test_API_typecheck.6 - elpi.tests.test_API_typecheck.5} |= - Set < elpi.tests.test_API_typecheck.7 - elpi.tests.test_API_typecheck.8 < elpi.tests.test_API_typecheck.6 - elpi.tests.test_API_typecheck.9 < elpi.tests.test_API_typecheck.5 - Set <= elpi.tests.test_API_typecheck.8 - Set <= elpi.tests.test_API_typecheck.9 - elpi.tests.test_API_typecheck.8 <= list.u0 - elpi.tests.test_API_typecheck.9 <= list.u0 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α3 := Type - α4 := Type - α5 := Type -WEAK CONSTRAINTS: - - -a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 - : foo1 ?A2 ?B1 ?B2 3 -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] + _uvk_129_ = X0 +COQC tests/test_readme.v Query assignments: - X = c0 \ c1 \ c2 \ -X0 c0 c1 c2 - _uvk_19_ = global (indt «nat») -Syntactic constraints: - {c0 c1 c2 c3 c4 c5 c6} : - decl c6 `z` (app [global (const «N»), c5]), - decl c5 `x` (global (indt «nat»)), - decl c4 `a` (global (indt «bool»)) - ?- evar (X0 c4 c5 c6) (X1 c4 c5 c6) (X0 c4 c5 c6) /* suspended on X0 */ - {c0 c1 c2 c3 c4 c5 c6} : - decl c6 `z` (app [global (const «N»), c5]), - decl c5 `x` (global (indt «nat»)), - decl c4 `a` (global (indt «bool»)) - ?- evar (X2 c4 c5 c6) (sort (typ «elpi.tests.test_HOAS.9»)) - (X1 c4 c5 c6) /* suspended on X2, X1 */ + A = «elpi.tests.test_API_module.A» +COQC tests/test_link_order7.v +Query assignments: + U = «foo» + 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 +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: + 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_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.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: - α3 := Type - α4 + α1 := Type + α2 := Type WEAK CONSTRAINTS: -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) -Query assignments: - L = [cs-instance (const «carrier») (cs-gref (const «W»)) (const «myc»), - cs-instance (const «eq_op») (cs-gref (const «Z»)) (const «myc»)] -1 - : nat -Query assignments: - GR = «nat» -[(c4 \ app [c1, c2]), (c4 \ app [c0, c2]), (c4 \ c4), (c4 \ - prod `x0` (app [c0, c2]) c5 \ - prod `x1` (global (indt «nat»)) c6 \ - sort (typ «elpi.tests.test_tactic.16»))] -[app - [global (indt «eq»), global (indt «nat»), c2, - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]], - sort prop] -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 -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments peano.Succ p -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 - = false - : bool -peano.eqb_OK : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) - -peano.eqb_OK is not universe polymorphic -Arguments peano.eqb_OK x1 x2 -peano.eqb_OK is opaque -Expands to: Constant elpi.apps.derive.examples.readme.peano.eqb_OK Query assignments: I = «inductive_nup.r» R = parameter A explicit (sort (typ «r.u0»)) c0 \ @@ -5170,133 +4729,38 @@ X1 is not universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X1 -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) -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))] -parameter T X0 (sort (typ X1)) c0 \ - record eq_class (sort (typ X2)) mk_eq_class - (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ - field X3 eq_proof - (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ - end-record) -Query assignments: - DECL = parameter T X0 (sort (typ «eq_class.u0»)) c0 \ - record eq_class (sort (typ «eq_class.u1»)) mk_eq_class - (field [canonical ff, coercion regular] eq_f (global (indt «bool»)) c1 \ - field X3 eq_proof - (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ - end-record) - GR = «eq_class» - _uvk_1_ = «eq_class.u0» - _uvk_2_ = «eq_class.u1» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {eq_class.u1 eq_class.u0} -FLEXIBLE UNIVERSES: - eq_class.u1 - eq_class.u0 -SORTS: - -WEAK CONSTRAINTS: - - -Record eq_class (T : Type@{eq_class.u0}) : Type@{eq_class.u1} := mk_eq_class - { eq_f : bool; eq_proof : eq_f = eq_f }. - -Arguments eq_class T%type_scope -Arguments mk_eq_class T%type_scope eq_f%bool_scope eq_proof -fun x : eq_class nat => x : bool - : eq_class nat -> bool -Deriving -Derivation map on indt «rtree» -p <- eq_proof ( xxx ) -Derivation map on indt «rtree» took 0.015317 -Derivation lens on indt «rtree» -Derivation lens on indt «rtree» failed, continuing -Derivation param1 on indt «rtree» -Derivation param1 on indt «rtree» took 0.035870 -_f1 : Lens fo_record fo_record peano peano - : Lens fo_record fo_record peano peano -Derivation param2 on indt «rtree» -_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 Query assignments: Spilled_1 = «elpi.tests.test_API_module.A» Module IA := Struct Definition z : nat. Definition i : Type. End -@_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 param1 on const «Nat.add» -Derivation param2 on indt «rtree» took 0.062339 -Derivation param1 on const «Nat.add» took 0.034468 -Derivation param2 on const «Nat.add» -Derivation tag on indt «rtree» -Derivation tag on indt «rtree» took 0.015837 -Derivation eqType_ast on indt «rtree» -Derivation eqType_ast on indt «rtree» took 0.002255 -Derivation lens_laws on indt «rtree» -Derivation lens_laws on indt «rtree» took 0.009729 -Derivation param1_congr on indt «rtree» -Derivation param2 on const «Nat.add» took 0.041118 -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 -Derivation param1_congr on indt «rtree» took 0.014000 -is_add - : forall n : nat, is_nat n -> forall m : nat, is_nat m -> is_nat (n + m) -Derivation param1_inhab on indt «rtree» -Derivation param1_inhab on indt «rtree» took 0.014653 -Derivation param1_functor on indt «rtree» -Derivation param1_functor on indt «rtree» took 0.010830 -Derivation fields on indt «rtree» -Derivation fields on indt «rtree» took 0.033481 -Derivation param1_trivial on indt «rtree» -Notation peano := Peano.peano -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p - = false - : bool -COQC tests/test_lens_laws.v -Peano.eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (Peano.eqb x1 x2) -«elpi.tests.test_API_typecheck.10» Query assignments: - U = «elpi.tests.test_API_typecheck.10» + Spilled_1 = «elpi.tests.test_API_module.IA» +Query assignments: + I = «eq» + P1 = «carrier» + P2 = «eq_op» +Query assignments: + GR = «nat» +foo : nat + : nat +Finished transaction in 9.131 secs (4.444u,0.006s) (successful) +bar : bool -> nat + : bool -> nat +COQC tests/test_link_order8.v +Query assignments: + C = «pc» +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.10} |= - Set <= elpi.tests.test_API_typecheck.10 + {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_API_typecheck.10} + {elpi.tests.test_elaborator.47} FLEXIBLE UNIVERSES: - elpi.tests.test_API_typecheck.10 + elpi.tests.test_elaborator.47 SORTS: WEAK CONSTRAINTS: @@ -5441,200 +4905,114 @@ X4 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X4 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: Query assignments: Spilled_1 = «elpi.tests.test_API_module.IA» -Derivation param1_trivial on indt «rtree» took 0.245392 -Derivation induction on indt «rtree» -Derivation induction on indt «rtree» took 0.004941 -Derivation eqb on indt «rtree» -Derivation eqb on indt «rtree» took 0.017871 -Derivation eqbcorrect on indt «rtree» -Notation peano := Peano.peano -Inductive peano : Set := Zero : peano | Succ : peano -> peano. +i + : Type +global (indt «nat») +Query assignments: + T = global (indt «nat») + _uvk_5_ = global (indt «nat») + _uvk_6_ = global (indt «nat») +Universe constraints: +UNIVERSES: + {elpi.tests.test_API_typecheck.9 elpi.tests.test_API_typecheck.8 + elpi.tests.test_API_typecheck.7 elpi.tests.test_API_typecheck.6 + elpi.tests.test_API_typecheck.5} |= + Set < elpi.tests.test_API_typecheck.7 + elpi.tests.test_API_typecheck.8 < elpi.tests.test_API_typecheck.6 + elpi.tests.test_API_typecheck.9 < elpi.tests.test_API_typecheck.5 + Set <= elpi.tests.test_API_typecheck.8 + Set <= elpi.tests.test_API_typecheck.9 + elpi.tests.test_API_typecheck.8 <= list.u0 + elpi.tests.test_API_typecheck.9 <= list.u0 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α3 := Type + α4 := Type + α5 := Type +WEAK CONSTRAINTS: + -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 +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.TA» +COQC tests/test_API_new_pred.v +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {myind.u0} +FLEXIBLE UNIVERSES: + myind.u0 +SORTS: + +WEAK CONSTRAINTS: + - = false - : bool -Peano.Peano_eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (Peano.Peano_eqb x1 x2) -1356 - : nat -this 3 app [c4, X0 c0 c1 c2 c3 c4] -app [c3, app [c1, c2], global (const «a»)] foo.bar -Derivation eqbcorrect on indt «rtree» took 0.063661 -Derivation eqbOK on indt «rtree» -Derivation eqbOK on indt «rtree» took 0.007933 -Done +myind true false : Prop + : Prop +K2 true : myind true true + : myind true true +myind1 true false : Prop + : Prop +K21 true : myind1 true true + : myind1 true true +COQC tests/test_link_order_import0.v +COQC tests/test_query_extra_dep.v +«elpi.tests.test_API_typecheck.10» Query assignments: - I = «eq» - P1 = «carrier» - P2 = «eq_op» -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) + 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: + + +Query assignments: + GR = const «myc1» +eq_op myc1 t1 t1 + : bool +COQC tests/test_toposort.v Query assignments: GR = indt «X3» Universe constraints: @@ -5649,9 +5027,83 @@ WEAK CONSTRAINTS: -Deriving -Skipping derivation map on indt «Box» since the user did not select it -Derivation lens on indt «Box» +COQC tests/test_synterp.v +Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set +<= Prop). +Query assignments: + E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set +<= Prop). +COQC tests/test_checker.v +COQC tests/test_replay.v +Query assignments: + S = sort (typ «elpi.tests.test_elaborator.50») + T = sort (typ «elpi.tests.test_elaborator.49») + TW = sort (typ «elpi.tests.test_elaborator.49») + W = sort (typ «elpi.tests.test_elaborator.51») + _uvk_131_ = «elpi.tests.test_elaborator.49» + _uvk_132_ = «elpi.tests.test_elaborator.51» +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.50 + elpi.tests.test_elaborator.49} |= + elpi.tests.test_elaborator.49 < elpi.tests.test_elaborator.50 + elpi.tests.test_elaborator.51 < elpi.tests.test_elaborator.49 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.49} +FLEXIBLE UNIVERSES: + elpi.tests.test_elaborator.51 + elpi.tests.test_elaborator.49 +SORTS: + +WEAK CONSTRAINTS: + + +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) +Query assignments: + Spilled_1 = «elpi.tests.test_API_module.TA» +Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End +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: + + +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 +[(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] +COQC tests/test_vernacular2.v +Query assignments: + GR = «Nat.add» + MP = «Coq.Init.Datatypes» +Query assignments: + P = const «eq_op» ---------------------------------- {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ @@ -5694,125 +5146,45 @@ WEAK CONSTRAINTS: -Derivation lens on indt «Box» took 0.022995 -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.008112 -Derivation eqType_ast on indt «Box» -Derivation eqType_ast on indt «Box» took 0.002258 -Derivation lens_laws on indt «Box» +Notation peano := peano.peano Inductive peano : Set := Zero : peano | Succ : peano -> peano. -Arguments Succ p +Arguments peano.Succ p = false : bool -eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (eqb x1 x2) -Derivation lens_laws on indt «Box» took 0.056618 -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.024190 -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» +peano.eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) +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] +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: - DECL = parameter T X0 (sort (typ «prim_eq_class.u0»)) c0 \ - record prim_eq_class (sort (typ «prim_eq_class.u1»)) mk_prim_eq_class - (field [canonical ff, coercion reversible] prim_eq_f - (global (indt «bool»)) c1 \ - field X1 prim_eq_proof - (app [global (indt «eq»), global (indt «bool»), c1, c1]) c2 \ - end-record) - GR = «prim_eq_class» - _uvk_3_ = «prim_eq_class.u0» - _uvk_4_ = «prim_eq_class.u1» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {prim_eq_class.u1 prim_eq_class.u0} -FLEXIBLE UNIVERSES: - prim_eq_class.u1 - prim_eq_class.u0 -SORTS: - -WEAK CONSTRAINTS: - - -Derivation eqb on indt «Box» took 0.015302 -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 -fun r : prim_eq_class nat => -eq_refl : r = {| prim_eq_f := r; prim_eq_proof := prim_eq_proof _ r |} - : forall r : prim_eq_class nat, - r = {| prim_eq_f := r; prim_eq_proof := prim_eq_proof _ r |} -(* {} |= prim_eq_class.u1 <= eq.u0 *) -Box.eqb : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool - : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool -@Box._tag : forall A : Type, Lens (Box A) (Box A) nat nat - : forall A : Type, Lens (Box A) (Box A) nat nat -Box._tag_set_set -: -forall (A : Type) (r : Box A) (y x : nat), -set Box._tag x (set Box._tag y r) = set Box._tag x r - : forall (A : Type) (r : Box A) (y x : nat), - set Box._tag x (set Box._tag y r) = set Box._tag x r -Box._tag_contents_exchange -: -forall (A : Type) (r : Box A) (x : nat) (y : A), -set Box._tag x (set Box._contents y r) = -set Box._contents y (set Box._tag x r) - : forall (A : Type) (r : Box A) (x : nat) (y : A), - set Box._tag x (set Box._contents y r) = - set Box._contents y (set Box._tag x r) -nat_eqb_OK : forall x y : nat, reflect (x = y) (nat_eqb x y) - : forall x y : nat, reflect (x = y) (nat_eqb x y) -Derivation map on indt «a» -Derivation map on indt «a» took 0.004890 -Derivation lens on indt «a» -Derivation lens on indt «a» failed, continuing -Derivation param1 on indt «a» -Derivation param1 on indt «a» took 0.009297 -Derivation param2 on indt «a» -Derivation param2 on indt «a» took 0.014393 -Derivation tag on indt «a» -Derivation tag on indt «a» took 0.002742 -Derivation eqType_ast on indt «a» -Derivation eqType_ast on indt «a» took 0.002000 -Derivation lens_laws on indt «a» -Derivation lens_laws on indt «a» took 0.001599 -Derivation param1_congr on indt «a» -Derivation param1_congr on indt «a» took 0.002034 -Derivation param1_inhab on indt «a» -Derivation param1_inhab on indt «a» took 0.008874 -Derivation param1_functor on indt «a» -Derivation param1_functor on indt «a» took 0.008876 -Derivation fields on indt «a» -Derivation fields on indt «a» took 0.021889 -Derivation param1_trivial on indt «a» -Derivation param1_trivial on indt «a» took 0.009964 -Derivation induction on indt «a» -Derivation induction on indt «a» took 0.007658 -Derivation eqb on indt «a» -Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). + X = sort (typ X0) + _uvk_133_ = X0 Query assignments: - E = Unable to unify "Set" with "Prop" (universe inconsistency: Cannot enforce Set -<= Prop). -Derivation eqb on indt «a» took 0.016289 + P = /build/reproducible-path/coq-elpi-2.1.0/elpi/elpi_elaborator.elpi +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 _)] Query assignments: GR = indt «X4» Universe constraints: @@ -5827,7 +5199,17 @@ WEAK CONSTRAINTS: -Derivation eqbcorrect on indt «a» +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 _)] ----<<---- enter: coq.say raw: (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.149»))) c0 \ @@ -5852,6 +5234,11 @@ ---->>---- exit: coq.univ.print +interp +[const-decl x none + (parameter P explicit (global (indt «bool»)) c0 \ + parameter Q explicit (global (indt «bool»)) c1 \ + arity (global (indt «nat»)))] ----<<---- enter: std.assert-ok! (coq.typecheck-indt-decl @@ -5886,6 +5273,13 @@ coq.env.add-indt (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.149»))) c0 \ []) X1 +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))] ---->>---- exit: get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.149»] ff [] ff) => @@ -5897,6 +5291,21 @@ X5 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X5 +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 _)])] ----<<---- enter: coq.say raw: (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.158»))) c0 \ @@ -5993,6 +5402,28 @@ [constructor K (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.157»)) c1 \ c0))]) X1 +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»)]]))])] ---->>---- exit: get-option coq:udecl (upoly-decl @@ -6009,9 +5440,15 @@ X6 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X6 -Derivation eqbcorrect on indt «a» took 0.024024 -Derivation eqbOK on indt «a» -Derivation eqbOK on indt «a» took 0.003027 +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] ----<<---- enter: coq.say raw: (inductive X8 tt (arity (sort (typ X0))) c0 \ []) (upoly-decl [] tt [] tt) @@ -6036,8 +5473,6 @@ c0 \ []) (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.173»))) c0 \ [])) Illtyped inductive declaration -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.IA» ----<<---- enter: coq.say typed: (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.173»))) c0 \ @@ -6049,8 +5484,6 @@ (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.173»))) c0 \ []) ----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X2 -i - : Type ---->>---- exit: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) (get-option coq:udecl (upoly-decl [] tt [] tt)) @@ -6059,6 +5492,7 @@ coq.env.add-indt (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.173»))) c0 \ []) X3 +interp [str X] ---->>---- exit: get-option coq:udecl (upoly-decl [] tt [] tt) => coq.env.add-indt @@ -6069,12 +5503,13 @@ X8 is universe polymorphic Expands to: Inductive elpi.tests.test_arg_HOAS.X8 -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 +synterp [int 1] +interp [int 1] ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ parameter x explicit c0 c1 \ arity c0) X0 +synterp [trm _] ---->>---- exit: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ @@ -6096,7 +5531,6 @@ (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ prod `x` c0 c1 \ c0)) illtyped definition ----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 -Derivation param1 on indt «b» ---->>---- exit: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) (get-option coq:udecl (upoly-decl [] tt [] tt)) @@ -6121,11 +5555,23 @@ Arguments f1 T%type_scope x f1 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f1 +interp [trm (app [global (indc «S»), global (indc «O»)])] +synterp +[const-decl x (some _) + (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.182»)) c0 \ parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.182»)) c1 \ parameter x explicit c0 c2 \ arity c0) X0 +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»)))] ---->>---- exit: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.182»)) c0 \ @@ -6160,6 +5606,9 @@ (upoly-decl [«elpi.tests.test_arg_HOAS.182»] ff [] tt) (get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.182»] ff [] tt)) +synterp +[const-decl x none + (parameter P explicit _ c0 \ parameter Q explicit _ c1 \ arity _)] ----<<---- enter: get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.182»] ff [] tt) => @@ -6187,11 +5636,30 @@ Arguments f2 (T T1)%type_scope x f2 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f2 +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) +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))] ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ X0)) c0 \ parameter x explicit c0 c1 \ arity (X1 c0 c1)) X2 -Derivation param1 on indt «b» took 0.014482 ---->>---- exit: coq.arity->term (parameter T explicit (sort (typ X0)) c0 \ @@ -6216,6 +5684,9 @@ (coq.elaborate-skeleton (fun `T` (sort (typ X8)) c0 \ fun `x` c0 c1 \ c1) (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.183»)) c0 \ prod `x` c0 c1 \ X7 c0 c1) X9) illtyped definition +c0 global (indt «nat») +Query assignments: + T = global (indt «nat») ---->>---- exit: get-option coq:keepunivs tt => std.assert-ok! @@ -6251,10 +5722,21 @@ Arguments f3 T%type_scope x f3 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f3 -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.003197 -Derivation eqType_ast on indt «b» +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 _)])] ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.187»)) c0 \ @@ -6295,10 +5777,7 @@ (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.187»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.187»)) c1 \ prod `x` c0 c2 \ X6 c0 c1 c2) X7) illtyped definition -Derivation eqType_ast on indt «b» took 0.002051 -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 +Query assignments: ---->>---- exit: get-option coq:keepunivs tt => std.assert-ok! @@ -6312,10 +5791,25 @@ (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.187»)) c0 \ fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.187»)) c1 \ fun `x` c0 c2 \ c2)) illtyped definition -Derivation param1_inhab on indt «b» + X = sort (typ «elpi.tests.test_elaborator.53») ----<<---- enter: coq.upoly-decl->attribute (upoly-decl [«elpi.tests.test_arg_HOAS.187»] ff [] tt) X8 + 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: + + ---->>---- exit: coq.upoly-decl->attribute (upoly-decl [«elpi.tests.test_arg_HOAS.187»] ff [] tt) @@ -6348,13 +5842,37 @@ Arguments f4 (T T1)%type_scope x f4 is transparent Expands to: Constant elpi.tests.test_arg_HOAS.f4 -Derivation param1_inhab on indt «b» took 0.004375 -Derivation param1_functor on indt «b» +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»)]]))])] ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «uuu»)) c0 \ parameter T1 explicit (sort (typ «uuu»)) c1 \ parameter x explicit c0 c2 \ arity (X0 c0 c1 c2)) X1 +synterp +[ctx-decl + (context-item A explicit _ none c0 \ + context-item B explicit _ none c1 \ context-end)] ---->>---- exit: coq.arity->term (parameter T explicit (sort (typ «uuu»)) c0 \ @@ -6385,8 +5903,6 @@ (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.191»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.192»)) c1 \ prod `x` c0 c2 \ X6 c0 c1 c2) X7) illtyped definition -Derivation param1_functor on indt «b» took 0.004733 -Derivation fields on indt «b» ---->>---- exit: std.assert-ok! (coq.elaborate-skeleton @@ -6412,10 +5928,10 @@ fun `T1` (sort (typ «f5.u3»)) c1 \ fun `x` c0 c2 \ c2) (prod `T` (sort (typ «f5.u0»)) c0 \ prod `T1` (sort (typ «f5.u1»)) c1 \ prod `x` c0 c2 \ c0) X8 «f5» -Derivation fields on indt «b» took 0.008706 -Skipping derivation param1_trivial on indt «b» -since the user did not select it -Derivation induction on indt «b» +interp +[ctx-decl + (context-item A explicit (global (indt «nat»)) none c0 \ + context-item B explicit (global (indt «bool»)) none c1 \ context-end)] ----<<---- enter: coq.arity->term (parameter T explicit (sort (typ «uuu»)) c0 \ @@ -6520,8 +6036,30 @@ 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» -Derivation induction on indt «b» took 0.015088 -Derivation eqb on indt «b» +File "./tests/test_HOAS.v", line 127, characters 0-34: +Warning: Use of “Require” inside a module is fragile. It is not recommended +to use this functionality in finished proof scripts. +[require-in-module,fragile,default] +Query assignments: +a : nat + +a is not universe polymorphic +a is transparent +Expands to: Constant elpi.tests.test_synterp.X.a + 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» ----<<---- enter: coq.arity->term (arity X0) X1 ---->>---- exit: coq.arity->term (arity X1) X1 ----<<---- enter: @@ -6537,10 +6075,6 @@ std.assert-ok! (coq.elaborate-skeleton (pglobal (const «f6») «Set») (X4) X5) illtyped definition -Inductive peano : Set := - Zero : Peano.peano | Succ : Peano.peano -> Peano.peano. - -Arguments Peano.Succ p ---->>---- exit: get-option coq:keepunivs tt => std.assert-ok! @@ -6549,20 +6083,14 @@ prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) (pglobal (const «f6») «Set»)) illtyped definition ----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X6 -Derivation eqb on indt «b» took 0.007927 ---->>---- exit: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) (get-option coq:udecl (upoly-decl [] tt [] tt)) -Derivation eqbcorrect on indt «b» - = false - : bool ----<<---- enter: get-option coq:udecl (upoly-decl [] tt [] tt) => coq.env.add-const f8 (pglobal (const «f6») «Set») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) X7 X8 -Peano.eqb_OK - : forall x1 x2 : Peano.peano, reflect (x1 = x2) (Peano.eqb x1 x2) ---->>---- exit: get-option coq:udecl (upoly-decl [] tt [] tt) => coq.env.add-const f8 (pglobal (const «f6») «Set») @@ -6601,15 +6129,23 @@ coq.env.add-const f7' (pglobal (const «f6») «uuu») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) X2 X3 +Raw term: +app + [global (const «add»), primitive (uint63 2000000003333002), + primitive (uint63 1)] +Nice term: add 2000000003333002 1 +Red: +2000000003333003 ---->>---- exit: get-option coq:udecl (upoly-decl [] tt [] tt) => coq.env.add-const f7' (pglobal (const «f6») «uuu») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) X2 «f7'» -Derivation eqbcorrect on indt «b» took 0.012670 -Derivation eqbOK on indt «b» +File "./tests/test_HOAS.v", line 131, characters 0-34: +Warning: Use of “Require” inside a module is fragile. It is not recommended +to use this functionality in finished proof scripts. +[require-in-module,fragile,default] ----<<---- enter: coq.arity->term (arity X0) X1 -Derivation eqbOK on indt «b» took 0.002709 ---->>---- exit: coq.arity->term (arity X1) X1 ----<<---- enter: get-option coq:keepunivs tt => @@ -6645,18 +6181,18 @@ coq.env.add-const f8' (pglobal (const «f6») «uuu») (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) X7 «f8'» -Debug: elpi lets escape exception: API coq.env.add-const cannot be used in -tactics -a_eqb - : a -> a -> bool +Raw term: +app + [global (const «add»), primitive (float64 24000000000000), + primitive (float64 1)] +Nice term: 24000000000000 + 1 +Red: 24000000000001 ----<<---- enter: coq.arity->term (arity (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.200»)) c1 \ prod `x` c0 c2 \ c0)) X0 -b_eqb - : b -> b -> bool ---->>---- exit: coq.arity->term (arity @@ -6702,6 +6238,7 @@ (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.200»)) c1 \ prod `x` c0 c2 \ c0) X2 «f7''» +COQC tests/test_ltac2.v ----<<---- enter: coq.arity->term (arity X0) X1 ---->>---- exit: coq.arity->term (arity X1) X1 ----<<---- enter: @@ -6752,394 +6289,11 @@ (prod `T` (sort (typ «uuu»)) c0 \ prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.201»)) c1 \ prod `x` c0 c2 \ c0) X7 «f8''» -File "./tests/test_HOAS.v", line 127, characters 0-34: -Warning: Use of “Require” inside a module is fragile. It is not recommended -to use this functionality in finished proof scripts. -[require-in-module,fragile,default] -Raw term: -app - [global (const «add»), primitive (uint63 2000000003333002), - primitive (uint63 1)] -Nice term: add 2000000003333002 1 -Red: -2000000003333003 -File "./tests/test_HOAS.v", line 131, characters 0-34: -Warning: Use of “Require” inside a module is fragile. It is not recommended -to use this functionality in finished proof scripts. -[require-in-module,fragile,default] -Raw term: -app - [global (const «add»), primitive (float64 24000000000000), - primitive (float64 1)] -Nice term: 24000000000000 + 1 -Red: 24000000000001 -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.TA» -Query assignments: - GR = const «myc1» -eq_op myc1 t1 t1 - : bool -Query assignments: - GR = «Nat.add» - MP = «Coq.Init.Datatypes» -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: - S = sort (typ «elpi.tests.test_elaborator.50») - T = sort (typ «elpi.tests.test_elaborator.49») - TW = sort (typ «elpi.tests.test_elaborator.49») - W = sort (typ «elpi.tests.test_elaborator.51») - _uvk_131_ = «elpi.tests.test_elaborator.49» - _uvk_132_ = «elpi.tests.test_elaborator.51» -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.50 - elpi.tests.test_elaborator.49} |= - elpi.tests.test_elaborator.49 < elpi.tests.test_elaborator.50 - elpi.tests.test_elaborator.51 < elpi.tests.test_elaborator.49 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_elaborator.51 elpi.tests.test_elaborator.49} -FLEXIBLE UNIVERSES: - elpi.tests.test_elaborator.51 - elpi.tests.test_elaborator.49 -SORTS: - -WEAK CONSTRAINTS: - +Module X := Struct Definition a : nat. End -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) -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)) -iota_tag : tag iota - : tag iota -large_tag : tag large - : tag large -prim_int_tag : tag prim_int - : tag prim_int -prim_float_tag : tag prim_float - : tag prim_float -pa_record_tag : forall A : Type, tag (pa_record A) - : forall A : Type, tag (pa_record A) -pr_record_tag : forall A : Type, tag (pr_record A) - : forall A : Type, tag (pr_record A) -ord_tag : forall p : peano, tag (ord p) - : forall p : peano, tag (ord p) -ord2_tag : forall p : peano, tag (ord2 p) - : forall p : peano, tag (ord2 p) -val_tag : tag val - : tag val -Query assignments: - C = «Nat.add» - F = TODO - T = app - [fix `add` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = app - [fix `plus` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - _uvk_35_ = global (indt «nat») - _uvk_36_ = c0 \ -global (indt «nat») - _uvk_37_ = c0 \ c1 \ -global (indt «nat») - _uvk_38_ = c0 \ -global (indt «nat») - _uvk_39_ = c0 \ c1 \ -global (indt «nat») - _uvk_40_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_41_ = c0 \ c1 \ c2 \ -global (indt «nat») -COQC tests/test_fields.v -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 -_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 -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 -Query assignments: - Spilled_1 = «elpi.tests.test_API_module.TA» -Module Type ITA = Sig Parameter z : nat. Parameter i : Type. End -Query assignments: - C = «Nat.add» - F = TODO - T = app - [fun `n` (global (indt «nat»)) c0 \ - fun `m` (global (indt «nat»)) c1 \ - match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) - [c1, - fun `p` (global (indt «nat»)) c2 \ - app - [global (indc «S»), - app - [fix `add` 0 - (prod `n` (global (indt «nat»)) c3 \ - prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) - c3 \ - fun `n` (global (indt «nat»)) c4 \ - fun `m` (global (indt «nat»)) c5 \ - match c4 - (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) - [c5, - fun `p` (global (indt «nat»)) c6 \ - app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = app - [fun `n` (global (indt «nat»)) c0 \ - fun `m` (global (indt «nat»)) c1 \ - match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) - [c1, - fun `p` (global (indt «nat»)) c2 \ - app - [global (indc «S»), - app - [fix `plus` 0 - (prod `n` (global (indt «nat»)) c3 \ - prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) - c3 \ - fun `n` (global (indt «nat»)) c4 \ - fun `m` (global (indt «nat»)) c5 \ - match c4 - (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) - [c5, - fun `p` (global (indt «nat»)) c6 \ - app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - _uvk_42_ = global (indt «nat») - _uvk_43_ = c0 \ -global (indt «nat») - _uvk_44_ = c0 \ c1 \ -global (indt «nat») - _uvk_45_ = c0 \ c1 \ -global (indt «nat») - _uvk_46_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_47_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_48_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_49_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_50_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_51_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_52_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») -Query assignments: - C = «pc» -[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 */ -Query assignments: -[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] - P = const «eq_op» - {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 */ +Module A := Struct Definition a : nat. End + +COQC tests/test_libobject_B.v Query assignments: A = «elpi.tests.test_API.succ» GR = «Nat.add» @@ -7148,380 +6302,147 @@ X2 = [loc-gref (const «Nat.add»)] X3 = [loc-abbreviation «elpi.tests.test_API.succ»] X4 = [loc-modpath «Coq.Init.Datatypes»] -[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 */ -[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 assignments: - C = «Nat.add» - F = TODO - T = match (app [global (indc «S»), global (indc «O»)]) - (fun `n` (global (indt «nat»)) c0 \ global (indt «nat»)) - [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], - fun `p` (global (indt «nat»)) c0 \ - app - [global (indc «S»), - app - [fix `add` 0 - (prod `n` (global (indt «nat»)) c1 \ - prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ - fun `n` (global (indt «nat»)) c2 \ - fun `m` (global (indt «nat»)) c3 \ - match c2 - (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) - [c3, - fun `p` (global (indt «nat»)) c4 \ - app [global (indc «S»), app [c1, c4, c3]]], c0, - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] - T1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] - T2 = match (app [global (indc «S»), global (indc «O»)]) - (fun `_` (global (indt «nat»)) c0 \ global (indt «nat»)) - [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], - fun `p` (global (indt «nat»)) c0 \ - app - [global (indc «S»), - app - [fix `plus` 0 - (prod `n` (global (indt «nat»)) c1 \ - prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ - fun `n` (global (indt «nat»)) c2 \ - fun `m` (global (indt «nat»)) c3 \ - match c2 - (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) - [c3, - fun `p` (global (indt «nat»)) c4 \ - app [global (indc «S»), app [c1, c4, c3]]], c0, - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] - _uvk_53_ = c0 \ -global (indt «nat») - _uvk_54_ = global (indt «nat») - _uvk_55_ = c0 \ -global (indt «nat») - _uvk_56_ = c0 \ c1 \ -global (indt «nat») - _uvk_57_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_58_ = c0 \ c1 \ -global (indt «nat») - _uvk_59_ = c0 \ c1 \ c2 \ -global (indt «nat») - _uvk_60_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - _uvk_61_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») -[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] -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» - {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 */ -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 -[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 */ -unit_is_tt : unit -> bool - : unit -> bool -peano_is_Zero : peano -> bool - : peano -> bool -peano_is_Succ : peano -> bool - : peano -> bool -option_is_None : forall A : Type, option A -> bool - : forall A : Type, option A -> bool -option_is_Some : forall A : Type, option A -> bool - : forall A : Type, option A -> bool -pair_is_Comma : forall A B : Type, pair A B -> bool - : forall A B : Type, pair A B -> bool -seq_is_Nil : forall A : Type, seq A -> bool - : forall A : Type, seq A -> bool -seq_is_Cons : forall A : Type, seq A -> bool - : forall A : Type, seq A -> bool -rose_is_Leaf : forall A : Type, rose A -> bool - : forall A : Type, rose A -> bool -rose_is_Node : forall A : Type, rose A -> bool - : forall A : Type, rose A -> bool -nest_is_NilN : forall A : Type, nest A -> bool - : forall A : Type, nest A -> bool -nest_is_ConsN : forall A : Type, nest A -> bool - : forall A : Type, nest A -> bool -w_is_via : forall A : Type, w A -> bool - : forall A : Type, w A -> bool -vect_is_VNil : forall (A : Type) (i : peano), vect A i -> bool - : forall (A : Type) (i : peano), vect A i -> bool -vect_is_VCons : forall (A : Type) (i : peano), vect A i -> bool - : forall (A : Type) (i : peano), vect A i -> bool -dyn_is_box : dyn -> bool - : dyn -> bool -zeta_is_Envelope : forall A : Type, zeta A -> bool - : forall A : Type, zeta A -> bool -beta_is_Redex : forall A : Type, beta A -> bool - : forall A : Type, beta A -> bool -iota_is_Why : iota -> bool - : iota -> bool -large_is_K1 - : large -> bool -large_is_K2 - : large -> bool -prim_int_is_PI - : prim_int -> bool -prim_float_is_PF - : prim_float -> bool -fo_record_is_Build_fo_record : fo_record -> bool - : fo_record -> bool -pa_record_is_Build_pa_record : forall A : Type, pa_record A -> bool - : forall A : Type, pa_record A -> bool -pr_record_is_Build_pr_record : forall A : Type, pr_record A -> bool - : forall A : Type, pr_record A -> bool -enum_is_E1 : enum -> bool - : enum -> bool Query assignments: W = const «W» -Universe constraints: -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»)]]] -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {myind.u0} -FLEXIBLE UNIVERSES: - myind.u0 -SORTS: - -WEAK CONSTRAINTS: - - -myind true false : Prop - : Prop -K2 true : myind true true - : myind true true -myind1 true false : Prop - : Prop -K21 true : myind1 true true - : myind1 true true -[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» -Query assignments: - X = «elpi.tests.test_API.1» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API.1} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -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: - - -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 -elpi.tests.test_HOAS.P.p1 1 global (const «P.x») -@P.p1 -X0 global (const «P.x») -P.p1 P.x -some - (fun `A` (sort (typ «P.foo.u0»)) c0 \ - fun `f` (app [global (indt «P.foo»), c0]) c1 \ - app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) -elpi.tests.test_HOAS.P.p2 2 global (const «P.x») -@P.p2 -X0 global (const «P.x») -P.p2 P.x -some - (fun `A` (sort (typ «P.foo.u0»)) c0 \ - fun `f` (app [global (indt «P.foo»), c0]) c1 \ - app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) -Query assignments: - _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: - +Notation peano := Peano.peano +Inductive peano : Set := Zero : peano | Succ : peano -> peano. -fun x : nuind nat 3 false => -match x in (nuind _ _ b) return (b = b) with -| k1 _ _ => eq_refl : true = true -| k2 _ _ x0 => (fun _ : nuind nat 1 false => eq_refl : false = false) x0 -end - : nuind nat 3 false -> false = false -Query assignments: - 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: - +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 -Query assignments: - P = const «eq_op» - W = indt «nat» + = false + : bool +Peano.Peano_eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (Peano.Peano_eqb x1 x2) Query assignments: D = X0 R = app @@ -7543,101 +6464,69 @@ 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 = typ «elpi.tests.test_API.4» - Y = typ «elpi.tests.test_API.5» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API.5 elpi.tests.test_API.4} |= - elpi.tests.test_API.4 <= elpi.tests.test_API.5 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - +COQC tests/test_link_order9.v +1356 + : nat +this 3 app [c4, X0 c0 c1 c2 c3 c4] +app [c3, app [c1, c2], global (const «a»)] foo.bar +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] +it = elpi_subproof + : True +it : True -Debug: elpi lets escape exception: Attribute foo2 is not supported -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 -c0 global (indt «nat») -Query assignments: - T = global (indt «nat») -Query assignments: - R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, c0], - global (indc «O»), global (const «p»)] - TY = app - [global (indt «ex»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, c0]] - _uvk_164_ = X0 - _uvk_165_ = X1 -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: - +it is not universe polymorphic +it is transparent +Expands to: Constant elpi.tests.test_ltac.it +elpi_subproof = I + : True +elpi_subproof : True -[attribute elpi.loc - (leaf-loc - File "./tests/test_tactic.v", line 314, column 10, character 6765:), - attribute elpi.phase (leaf-str interp)] -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»))] -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 +elpi_subproof is not universe polymorphic +elpi_subproof is opaque +Expands to: Constant elpi.tests.test_ltac.elpi_subproof +Closed under the global context +COQC tests/test_link_order_import1.v +COQC tests/test_link_order_import2.v +Universe constraints: +COQC tests/test_derive_stdlib.v +[cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] Query assignments: - Body = some - (pglobal (const «toto») - «elpi.tests.test_HOAS.19 elpi.tests.test_HOAS.20») - C = «titi» - Term = prod `T1` (sort (typ «elpi.tests.test_HOAS.19»)) c0 \ - prod `T2` (sort (typ «elpi.tests.test_HOAS.20»)) c1 \ prod `x` c0 c2 \ c0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - + L = [cs-instance (const «eq_op») (cs-gref (const «Z1»)) (const «myc1»)] + P = const «eq_op» + W = const «Z1» +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)) +COQC tests/test_param2.v +Inductive peano : Set := Zero : peano | Succ : peano -> peano. +Arguments Succ p + = false + : bool +eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (eqb x1 x2) Query assignments: D = parameter A X0 (sort (typ «tx.u0»)) c0 \ inductive tx X1 @@ -7690,29 +6579,24 @@ WEAK CONSTRAINTS: +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_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 )] Query assignments: - R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `hd_beta_auto` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], - global (indc «O»), global (const «p»)] - TY = app - [global (indt «ex»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] - _uvk_174_ = X0 - _uvk_175_ = c0 \ -X1 c0 - _uvk_176_ = X2 - _uvk_177_ = X3 + 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: @@ -7722,466 +6606,214 @@ WEAK CONSTRAINTS: -empty_fields_t : positive -> Type - : positive -> Type -empty_fields : forall n : empty, empty_fields_t (empty_tag n) - : forall n : empty, empty_fields_t (empty_tag n) -empty_construct -: -forall p : positive, empty_fields_t p -> Datatypes.option empty - : forall p : positive, empty_fields_t p -> Datatypes.option empty -empty_constructP -: -forall n : empty, -empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n - : forall n : empty, - empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n -unit_fields_t : positive -> Type - : positive -> Type -unit_fields : forall n : unit, unit_fields_t (unit_tag n) - : forall n : unit, unit_fields_t (unit_tag n) -unit_construct -: -forall p : positive, unit_fields_t p -> Datatypes.option unit - : forall p : positive, unit_fields_t p -> Datatypes.option unit -unit_constructP -: -forall n : unit, -unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n - : forall n : unit, - unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n -peano_fields_t : positive -> Type - : positive -> Type -peano_fields : forall n : peano, peano_fields_t (peano_tag n) - : forall n : peano, peano_fields_t (peano_tag n) -peano_construct -: -forall p : positive, peano_fields_t p -> Datatypes.option peano - : forall p : positive, peano_fields_t p -> Datatypes.option peano -peano_constructP -: -forall n : peano, -peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n - : forall n : peano, - peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n -option_fields_t : Type -> positive -> Type - : Type -> positive -> Type -option_fields -: -forall (A : Type) (l : option A), option_fields_t A (option_tag A l) - : forall (A : Type) (l : option A), option_fields_t A (option_tag A l) -option_construct -: -forall (A : Type) (p : positive), -option_fields_t A p -> Datatypes.option (option A) - : forall (A : Type) (p : positive), - option_fields_t A p -> Datatypes.option (option A) -option_constructP -: -forall (A : Type) (l : option A), -option_construct A (option_tag A l) (option_fields A l) = Datatypes.Some l - : forall (A : Type) (l : option A), - option_construct A (option_tag A l) (option_fields A l) = - Datatypes.Some l -pair_fields_t : Type -> Type -> positive -> Type - : Type -> Type -> positive -> Type -pair_fields -: -forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) - : forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) -pair_construct -: -forall (A B : Type) (p : positive), -pair_fields_t A B p -> Datatypes.option (pair A B) - : forall (A B : Type) (p : positive), - pair_fields_t A B p -> Datatypes.option (pair A B) -pair_constructP -: -forall (A B : Type) (l : pair A B), -pair_construct A B (pair_tag A B l) (pair_fields A B l) = Datatypes.Some l - : forall (A B : Type) (l : pair A B), - pair_construct A B (pair_tag A B l) (pair_fields A B l) = - Datatypes.Some l -seq_fields_t : Type -> positive -> Type - : Type -> positive -> Type -seq_fields : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) - : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) -seq_construct -: -forall (A : Type) (p : positive), -seq_fields_t A p -> Datatypes.option (seq A) - : forall (A : Type) (p : positive), - seq_fields_t A p -> Datatypes.option (seq A) -seq_constructP -: -forall (A : Type) (l : seq A), -seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l - : forall (A : Type) (l : seq A), - seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l -rose_fields_t : Type -> positive -> Type - : Type -> positive -> Type -rose_fields : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) - : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) -rose_construct -: -forall (A : Type) (p : positive), -rose_fields_t A p -> Datatypes.option (rose A) - : forall (A : Type) (p : positive), - rose_fields_t A p -> Datatypes.option (rose A) -rose_constructP -: -forall (A : Type) (l : rose A), -rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l - : forall (A : Type) (l : rose A), - rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l -beta_fields_t : Type -> positive -> Type - : Type -> positive -> Type -beta_fields : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) - : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) -beta_construct -: -forall (A : Type) (p : positive), -beta_fields_t A p -> Datatypes.option (beta A) - : forall (A : Type) (p : positive), - beta_fields_t A p -> Datatypes.option (beta A) -beta_constructP -: -forall (A : Type) (l : beta A), -beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l - : forall (A : Type) (l : beta A), - beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l -large_fields_t : positive -> Type - : positive -> Type -large_fields : forall n : large, large_fields_t (large_tag n) - : forall n : large, large_fields_t (large_tag n) -large_construct -: -forall p : positive, large_fields_t p -> Datatypes.option large - : forall p : positive, large_fields_t p -> Datatypes.option large -large_constructP -: -forall n : large, -large_construct (large_tag n) (large_fields n) = Datatypes.Some n - : forall n : large, - large_construct (large_tag n) (large_fields n) = Datatypes.Some n -prim_int_fields_t : positive -> Type - : positive -> Type -prim_int_fields : forall n : prim_int, prim_int_fields_t (prim_int_tag n) - : forall n : prim_int, prim_int_fields_t (prim_int_tag n) -prim_int_construct -: -forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int - : forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int -prim_int_constructP -: -forall n : prim_int, -prim_int_construct (prim_int_tag n) (prim_int_fields n) = Datatypes.Some n - : forall n : prim_int, - prim_int_construct (prim_int_tag n) (prim_int_fields n) = - Datatypes.Some n -pa_record_fields_t : Type -> positive -> Type - : Type -> positive -> Type -pa_record_fields -: -forall (A : Type) (l : pa_record A), pa_record_fields_t A (pa_record_tag A l) - : forall (A : Type) (l : pa_record A), - pa_record_fields_t A (pa_record_tag A l) -pa_record_construct -: -forall (A : Type) (p : positive), -pa_record_fields_t A p -> Datatypes.option (pa_record A) - : forall (A : Type) (p : positive), - pa_record_fields_t A p -> Datatypes.option (pa_record A) -pa_record_constructP -: -forall (A : Type) (l : pa_record A), -pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = -Datatypes.Some l - : forall (A : Type) (l : pa_record A), - pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = - Datatypes.Some l -pr_record_fields_t : Type -> positive -> Type - : Type -> positive -> Type -pr_record_fields -: -forall (A : Type) (l : pr_record A), pr_record_fields_t A (pr_record_tag A l) - : forall (A : Type) (l : pr_record A), - pr_record_fields_t A (pr_record_tag A l) -pr_record_construct -: -forall (A : Type) (p : positive), -pr_record_fields_t A p -> Datatypes.option (pr_record A) - : forall (A : Type) (p : positive), - pr_record_fields_t A p -> Datatypes.option (pr_record A) -pr_record_constructP -: -forall (A : Type) (l : pr_record A), -pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = -Datatypes.Some l - : forall (A : Type) (l : pr_record A), - pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = - Datatypes.Some l -sigma_bool_fields_t : positive -> Type - : positive -> Type -sigma_bool_fields -: -forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) - : forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) -sigma_bool_construct -: -forall p : positive, sigma_bool_fields_t p -> Datatypes.option sigma_bool - : forall p : positive, - sigma_bool_fields_t p -> Datatypes.option sigma_bool -sigma_bool_constructP -: -forall l : sigma_bool, -sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = -Datatypes.Some l - : forall l : sigma_bool, - sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = - Datatypes.Some l -ord_fields_t : peano -> positive -> Type - : peano -> positive -> Type -ord_fields : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) - : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) -ord_construct -: -forall (n : peano) (p : positive), -ord_fields_t n p -> Datatypes.option (ord n) - : forall (n : peano) (p : positive), - ord_fields_t n p -> Datatypes.option (ord n) -ord_constructP -: -forall (p : peano) (o : ord p), -ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o - : forall (p : peano) (o : ord p), - ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o -ord2_fields_t : peano -> positive -> Type - : peano -> positive -> Type -ord2_fields : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) - : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) -ord2_construct -: -forall (n : peano) (p : positive), -ord2_fields_t n p -> Datatypes.option (ord2 n) - : forall (n : peano) (p : positive), - ord2_fields_t n p -> Datatypes.option (ord2 n) -ord2_constructP -: -forall (p : peano) (o : ord2 p), -ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o - : forall (p : peano) (o : ord2 p), - ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o -val_fields_t : positive -> Type - : positive -> Type -val_fields : forall i : val, val_fields_t (val_tag i) - : forall i : val, val_fields_t (val_tag i) -val_construct : forall p : positive, val_fields_t p -> Datatypes.option val - : forall p : positive, val_fields_t p -> Datatypes.option val -val_constructP -: -forall v : val, val_construct (val_tag v) (val_fields v) = Datatypes.Some v - : forall v : val, - val_construct (val_tag v) (val_fields v) = Datatypes.Some v -COQC tests/test_eqb.v +COQC tests/test_invert.v +Query q X0 +Query r X0 +Result r 1 +COQC tests/test_idx2inv.v Query assignments: - Y = global (indc «is_O») -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" ] ] + 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») +Debug: elpi lets escape exception: API coq.env.add-const cannot be used in +tactics +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) -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 ] ] +Arguments nth_R (T T)%type_scope T%function_scope + x0 x0 x0 (n n)%nat_scope n (l l)%list_scope l +Query assignments: + P = const «eq_op» + W = indt «nat» +a + : nat +L= [p 1] +Query assignments: + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, c0], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, c0]] + _uvk_164_ = X0 + _uvk_165_ = X1 +Inductive peano : Set := + Zero : Peano.peano | Succ : Peano.peano -> Peano.peano. -[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)] +Arguments Peano.Succ p + = false + : bool +Peano.eqb_OK + : forall x1 x2 : Peano.peano, reflect (x1 = x2) (Peano.eqb x1 x2) Query assignments: - X = typ «elpi.tests.test_API.9» - Y = typ «elpi.tests.test_API.10» + X = typ «elpi.tests.test_API.2» + Y = typ «elpi.tests.test_API.3» Universe constraints: UNIVERSES: - {elpi.tests.test_API.10 elpi.tests.test_API.9} |= - elpi.tests.test_API.9 < elpi.tests.test_API.10 + {elpi.tests.test_API.3 elpi.tests.test_API.2} |= + elpi.tests.test_API.2 <= elpi.tests.test_API.3 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -8191,14 +6823,47 @@ WEAK CONSTRAINTS: -Query assignments: - Spilled_1 = const «nuc» -nuc : forall x : nat, C1 -> C3 x +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. -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 +Arguments listR_inv A%type_scope PA%function_scope idx0%list_scope +Arguments nilR_inv A%type_scope PA%function_scope idx0%list_scope _ +Arguments consR_inv A%type_scope PA%function_scope + idx0%list_scope a _ xs%list_scope _ _ +COQC examples/usage.v +COQC examples/readme.v +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 +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 = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ parameter a explicit c0 c1 \ @@ -8271,29 +6936,44 @@ WEAK CONSTRAINTS: +COQC tests/test_link_order_import3.v +[trm c0, trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ +[trm c0, trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «True»)) (X2 c0 c1) /* suspended on X1, X2 */ +[trm c0, trm c1] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), c0, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0 c1) (global (indt «True»)) (X1 c0 c1) /* suspended on X0, X1 */ +[trm (app [global (const «Nat.add»), X0 c0 c1, c1])] + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0 c1) (global (indt «nat»)) (X0 c0 c1) /* suspended on X1, X0 */ + {c0 c1} : + decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»)) + ?- evar (X2 c0 c1) (global (indt «True»)) (X3 c0 c1) /* suspended on X2, X3 */ Query assignments: - R = app - [global (indc «ex_intro»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], - global (indc «O»), global (const «p»)] - TY = app - [global (indt «ex»), global (indt «nat»), - fun `n` (global (indt «nat»)) c0 \ - app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] - _uvk_211_ = X0 - _uvk_212_ = c0 \ -X1 c0 - _uvk_213_ = X2 - _uvk_214_ = X3 + X = typ «elpi.tests.test_API.4» + Y = typ «elpi.tests.test_API.5» 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_API.5 elpi.tests.test_API.4} |= + elpi.tests.test_API.4 <= elpi.tests.test_API.5 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -8303,103 +6983,207 @@ WEAK CONSTRAINTS: -pglobal (const «toto») X0 -pglobal (const «toto») «u1 u2» -toto +[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 */ +[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 */ 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: - - -derive.param1_trivial: wrong shape is_nest -. It does not look like a unary parametricity translation of an inductive with no indexes. -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»))] + 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»))] +[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])] 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) => + C = «Nat.add» + F = TODO + {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 */ + T = app + [fun `n` (global (indt «nat»)) c0 \ + fun `m` (global (indt «nat»)) c1 \ + match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) + [c1, + fun `p` (global (indt «nat»)) c2 \ + app + [global (indc «S»), + app + [fix `add` 0 + (prod `n` (global (indt «nat»)) c3 \ + prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) + c3 \ + fun `n` (global (indt «nat»)) c4 \ + fun `m` (global (indt «nat»)) c5 \ + match c4 + (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) + [c5, + fun `p` (global (indt «nat»)) c6 \ + app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = app + [fun `n` (global (indt «nat»)) c0 \ + fun `m` (global (indt «nat»)) c1 \ + match c0 (fun `n` (global (indt «nat»)) c2 \ global (indt «nat»)) + [c1, + fun `p` (global (indt «nat»)) c2 \ + app + [global (indc «S»), + app + [fix `plus` 0 + (prod `n` (global (indt «nat»)) c3 \ + prod `m` (global (indt «nat»)) c4 \ global (indt «nat»)) + c3 \ + fun `n` (global (indt «nat»)) c4 \ + fun `m` (global (indt «nat»)) c5 \ + match c4 + (fun `n` (global (indt «nat»)) c6 \ global (indt «nat»)) + [c5, + fun `p` (global (indt «nat»)) c6 \ + app [global (indc «S»), app [c3, c6, c5]]], c2, c1]]], + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + _uvk_42_ = global (indt «nat») + _uvk_43_ = c0 \ +global (indt «nat») + _uvk_44_ = c0 \ c1 \ +global (indt «nat») + _uvk_45_ = c0 \ c1 \ +global (indt «nat») + _uvk_46_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_47_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_48_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_49_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_50_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_51_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_52_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») +[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 */ +pred_R = +fun (n n0 : nat) (n1 : nat_R n n0) => match - Pn in (is_nat n0) return (is_nat match n0 with - | 0 => n - | S u => u - end) + 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 -| is_O => Pn -| is_S _ Pu => Pu +| O_R => n1 +| S_R _ _ u1 => u1 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: - A = tt - B = 0 - C = 0 - D = sort (typ «Set») - E = [«true», «false»] - F = [global (indt «bool»), global (indt «bool»)] - GR = «bool» -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). + : forall n n0 : nat, nat_R n n0 -> nat_R (Nat.pred n) (Nat.pred n0) -Arguments is_bla _%nat_scope P_ s1 -Arguments is_Bla _%nat_scope P_ -Arguments is_Blu n%nat_scope Pn _ P_ -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») «»] +Arguments pred_R (n n)%nat_scope n +pred_R : nat2nat_R Nat.pred Nat.pred + : nat2nat_R Nat.pred Nat.pred +[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 */ +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_projK.v +COQC tests/test_derive.v +COQC tests/test_eq.v +COQC tests/test_isK.v +COQC tests/test_param1.v +File "./tests/test_param2.v", line 85, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] 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_ = «» + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `hd_beta_auto` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] + _uvk_174_ = X0 + _uvk_175_ = c0 \ +X1 c0 + _uvk_176_ = X2 + _uvk_177_ = X3 Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.29} |= - Set <= elpi.tests.test_HOAS.29 - Set = elpi.tests.test_HOAS.29 + {elpi.tests.test_elaborator.58 elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.56 elpi.tests.test_elaborator.55} |= + Set <= elpi.tests.test_elaborator.55 + elpi.tests.test_elaborator.55 <= elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.56 <= elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.57 <= elpi.tests.test_elaborator.58 ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.29} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.29 := Set + SORTS: WEAK CONSTRAINTS: +COQC tests/test_map.v +COQC tests/test_libobject_C.v +Query assignments: + Spilled_1 = const «nuc» +nuc : forall x : nat, C1 -> C3 x + +nuc is not universe polymorphic +Arguments nuc x%nat_scope _ +nuc is a reversible coercion +Expands to: Constant elpi.tests.test_API_TC_CS.nuc +COQC tests/test_lens.v Query assignments: D = parameter A explicit (sort (typ «elpi.tests.test_API_env.20»)) c0 \ parameter a explicit c0 c1 \ @@ -8472,196 +7256,132 @@ 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. +global (indc «O») +app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] Query assignments: - A4 = «elpi.tests.test_HOAS.36» - A5 = «elpi.tests.test_HOAS.37» - A6 = «elpi.tests.test_HOAS.38» - A7 = «elpi.tests.test_HOAS.39» - A8 = «elpi.tests.test_HOAS.40» - Arity = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ - sort (typ «elpi.tests.test_HOAS.30») - Arity1 = prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ - sort (typ «elpi.tests.test_HOAS.31») - Arity2 = prod `T` (sort (typ «elpi.tests.test_HOAS.32»)) c0 \ - sort (typ «elpi.tests.test_HOAS.32») - Arity4 = prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ - sort (typ «elpi.tests.test_HOAS.36») - Arity5 = prod `T` (sort (typ «elpi.tests.test_HOAS.37»)) c0 \ - sort (typ «elpi.tests.test_HOAS.37») - B = «Build_F» - B1 = «elpi.tests.test_HOAS.43» - B2 = «elpi.tests.test_HOAS.44» - BTy2 = prod `T` (sort (typ «elpi.tests.test_HOAS.42»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.42», c0] - BTy3 = prod `T` (sort (typ «elpi.tests.test_HOAS.43»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.43», c0] - BoN = none - BoT = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT1 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT2 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.47»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT4 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT5 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.50»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT6 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.64»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - BoT7 = some - (fun `T` (sort (typ «elpi.tests.test_HOAS.66»)) c0 \ - fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) c1 \ - match c1 - (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) - c2 \ c0) [fun `t` c0 c2 \ c2]) - C1 = «elpi.tests.test_HOAS.54» - C2 = «elpi.tests.test_HOAS.55» - C3 = «elpi.tests.test_HOAS.58» - C4 = «elpi.tests.test_HOAS.59» - C5 = «elpi.tests.test_HOAS.62» - C6 = «elpi.tests.test_HOAS.63» - D1 = «elpi.tests.test_HOAS.49» - D2 = «elpi.tests.test_HOAS.50» - D3 = «elpi.tests.test_HOAS.51» - D4 = X0 - E5 = «elpi.tests.test_HOAS.66» - E6 = «elpi.tests.test_HOAS.67» - GRB = indc «Build_F» - GRF = indt «F» - GRn = const «n» - GRt = const «t» - I = «elpi.tests.test_HOAS.30» - I2 = «elpi.tests.test_HOAS.41» - I3 = «elpi.tests.test_HOAS.45» - I4 = «» - Ind = «F» - K = [«Build_F»] - KTys = [prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.30», c0]] - KTys1 = [prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.31», c0]] - KTys3 = [prod `T` (sort (typ «elpi.tests.test_HOAS.33»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.33», c0]] - KTys4 = [prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.36», c0]] - KTys6 = [prod `T` (sort (typ «elpi.tests.test_HOAS.38»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.38», c0]] - N = «n» - T = «t» - TyB = prod `T` (sort (typ «elpi.tests.test_HOAS.41»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.41», c0] - TyB2 = prod `T` (sort (typ «elpi.tests.test_HOAS.56»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.56», c0] - TyB3 = prod `T` (sort (typ «elpi.tests.test_HOAS.58»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.58», c0] - TyF = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ - sort (typ «elpi.tests.test_HOAS.30») - TyF2 = prod `T` (sort (typ «elpi.tests.test_HOAS.52»)) c0 \ - sort (typ «elpi.tests.test_HOAS.52») - TyF3 = prod `T` (sort (typ «elpi.tests.test_HOAS.54»)) c0 \ - sort (typ «elpi.tests.test_HOAS.54») - TyN = global (indt «nat») - TyT = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ - c0 - TyT1 = prod `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ - c0 - TyT3 = prod `T` (sort (typ «elpi.tests.test_HOAS.48»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.48», c0]) c1 \ - c0 - TyT4 = prod `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ - c0 - TyT5 = prod `T` (sort (typ «elpi.tests.test_HOAS.51»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.51», c0]) c1 \ - c0 - TyT6 = prod `T` (sort (typ «elpi.tests.test_HOAS.60»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.60», c0]) c1 \ - c0 - TyT7 = prod `T` (sort (typ «elpi.tests.test_HOAS.62»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.62», c0]) c1 \ - c0 - Tyt = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ - prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ - c0 + C = «Nat.add» + F = TODO + T = match (app [global (indc «S»), global (indc «O»)]) + (fun `n` (global (indt «nat»)) c0 \ global (indt «nat»)) + [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], + fun `p` (global (indt «nat»)) c0 \ + app + [global (indc «S»), + app + [fix `add` 0 + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ + fun `n` (global (indt «nat»)) c2 \ + fun `m` (global (indt «nat»)) c3 \ + match c2 + (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) + [c3, + fun `p` (global (indt «nat»)) c4 \ + app [global (indc «S»), app [c1, c4, c3]]], c0, + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = match (app [global (indc «S»), global (indc «O»)]) + (fun `_` (global (indt «nat»)) c0 \ global (indt «nat»)) + [app [global (indc «S»), app [global (indc «S»), global (indc «O»)]], + fun `p` (global (indt «nat»)) c0 \ + app + [global (indc «S»), + app + [fix `plus` 0 + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) c1 \ + fun `n` (global (indt «nat»)) c2 \ + fun `m` (global (indt «nat»)) c3 \ + match c2 + (fun `n` (global (indt «nat»)) c4 \ global (indt «nat»)) + [c3, + fun `p` (global (indt «nat»)) c4 \ + app [global (indc «S»), app [c1, c4, c3]]], c0, + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] + _uvk_53_ = c0 \ +global (indt «nat») + _uvk_54_ = global (indt «nat») + _uvk_55_ = c0 \ +global (indt «nat») + _uvk_56_ = c0 \ c1 \ +global (indt «nat») + _uvk_57_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_58_ = c0 \ c1 \ +global (indt «nat») + _uvk_59_ = c0 \ c1 \ c2 \ +global (indt «nat») + _uvk_60_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + _uvk_61_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») +COQC tests/test_tag.v +COQC tests/test_eqType_ast.v +Query assignments: + R = app + [global (indc «ex_intro»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)], + global (indc «O»), global (const «p»)] + TY = app + [global (indt «ex»), global (indt «nat»), + fun `n` (global (indt «nat»)) c0 \ + app [global (indt «eq»), global (indt «nat»), c0, global (indc «O»)]] + _uvk_211_ = X0 + _uvk_212_ = c0 \ +X1 c0 + _uvk_213_ = X2 + _uvk_214_ = X3 Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.67 elpi.tests.test_HOAS.66 elpi.tests.test_HOAS.65 - elpi.tests.test_HOAS.64 elpi.tests.test_HOAS.63 elpi.tests.test_HOAS.62 - elpi.tests.test_HOAS.61 elpi.tests.test_HOAS.60 elpi.tests.test_HOAS.59 - elpi.tests.test_HOAS.58 elpi.tests.test_HOAS.57 elpi.tests.test_HOAS.56 - elpi.tests.test_HOAS.55 elpi.tests.test_HOAS.54 elpi.tests.test_HOAS.53 - elpi.tests.test_HOAS.52 elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.50 - elpi.tests.test_HOAS.49 elpi.tests.test_HOAS.48 elpi.tests.test_HOAS.47 - elpi.tests.test_HOAS.46 elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 - elpi.tests.test_HOAS.43 elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 - elpi.tests.test_HOAS.40 elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 - elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 - elpi.tests.test_HOAS.34 elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 - elpi.tests.test_HOAS.31 elpi.tests.test_HOAS.30} |= + {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: + +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: - {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 elpi.tests.test_HOAS.43 - elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40 - elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 elpi.tests.test_HOAS.34 - elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 elpi.tests.test_HOAS.31 - elpi.tests.test_HOAS.30} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.45 - elpi.tests.test_HOAS.44 - elpi.tests.test_HOAS.43 - elpi.tests.test_HOAS.42 - elpi.tests.test_HOAS.41 - elpi.tests.test_HOAS.40 - elpi.tests.test_HOAS.39 - elpi.tests.test_HOAS.38 - elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 - elpi.tests.test_HOAS.35 - elpi.tests.test_HOAS.34 - elpi.tests.test_HOAS.33 - elpi.tests.test_HOAS.32 - elpi.tests.test_HOAS.31 - elpi.tests.test_HOAS.30 + SORTS: WEAK CONSTRAINTS: Query assignments: - F = app [global (const «nat_of_bool»), global (indc «true»)] -x1 - : nat -w - : nat + A = tt + B = 0 + C = 0 + D = sort (typ «Set») + E = [«true», «false»] + F = [global (indt «bool»), global (indt «bool»)] + GR = «bool» Query assignments: D = parameter P explicit (sort (typ «r1.u0»)) c0 \ parameter p explicit c0 c1 \ @@ -8677,242 +7397,315 @@ (app [global (indt «eq»), c0, c1, app [c2, c1]]) c3 \ end-record) I = «r1» UP = «r1.u0» - UR = «r1.u0» -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.68» -parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) -«elpi.tests.test_HOAS.68» -parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) -parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) + UR = «r1.u0» +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 +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.008811 +Derivation lens on indt «rtree» +Derivation lens on indt «rtree» failed, continuing +Derivation param1 on indt «rtree» +Derivation param1 on indt «rtree» took 0.019747 +Derivation param2 on indt «rtree» +Derivation param2 on indt «rtree» took 0.023172 +Derivation tag on indt «rtree» +Derivation tag on indt «rtree» took 0.004490 +Derivation eqType_ast on indt «rtree» +Derivation eqType_ast on indt «rtree» took 0.002664 +Derivation lens_laws on indt «rtree» +Derivation lens_laws on indt «rtree» took 0.002127 +Derivation param1_congr on indt «rtree» +Derivation param1_congr on indt «rtree» took 0.008578 +Derivation param1_inhab on indt «rtree» +Derivation param1_inhab on indt «rtree» took 0.008670 +Derivation param1_functor on indt «rtree» +Derivation param1_functor on indt «rtree» took 0.008816 +Derivation fields on indt «rtree» +Derivation fields on indt «rtree» took 0.019272 +Derivation param1_trivial on indt «rtree» +Debug: elpi lets escape exception: Attribute foo2 is not supported Query assignments: - Decl = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - Decl1 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - Decl2 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - GRF = indt «F» - I = «elpi.tests.test_HOAS.68» - Ind = «F» + 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»)]]] +Derivation param1_trivial on indt «rtree» took 0.177496 +Derivation induction on indt «rtree» +Query assignments: +Derivation induction on indt «rtree» took 0.006578 +Derivation eqb on indt «rtree» + X = typ «elpi.tests.test_API.9» + Y = typ «elpi.tests.test_API.10» Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} |= + {elpi.tests.test_API.10 elpi.tests.test_API.9} |= + elpi.tests.test_API.9 < elpi.tests.test_API.10 ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.69 - elpi.tests.test_HOAS.68 + SORTS: WEAK CONSTRAINTS: -empty_eqb : eq_test2 empty empty - : eq_test2 empty empty -unit_eqb : eq_test2 unit unit - : eq_test2 unit unit -peano_eqb : eq_test2 peano peano - : eq_test2 peano peano -option_eqb : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) - : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) -pair_eqb +Derivation eqb on indt «rtree» took 0.023146 +Derivation eqbcorrect on indt «rtree» +Derivation eqbcorrect on indt «rtree» took 0.060043 +Derivation eqbOK on indt «rtree» +Derivation eqbOK on indt «rtree» took 0.005074 +Done +rtree.induction : -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) (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.014454 +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.004746 +Derivation eqType_ast on indt «Box» +Derivation eqType_ast on indt «Box» took 0.002265 +Derivation lens_laws on indt «Box» +Derivation lens_laws on indt «Box» took 0.025358 +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.013438 +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.011253 +Skipping derivation eqbcorrect on indt «Box» +since the user did not select it +Skipping derivation eqbOK on indt «Box» since the user did not select it +Done +Box.eqb : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool + : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool +@Box._tag : forall A : Type, Lens (Box A) (Box A) nat nat + : forall A : Type, Lens (Box A) (Box A) nat nat +Box._tag_set_set : -forall A : Type, 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) (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, 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 +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.006912 +Derivation lens on indt «a» +Derivation lens on indt «a» failed, continuing +Derivation param1 on indt «a» +Derivation param1 on indt «a» took 0.011397 +Derivation param2 on indt «a» +Derivation param2 on indt «a» took 0.012380 +Derivation tag on indt «a» +Derivation tag on indt «a» took 0.004957 +Derivation eqType_ast on indt «a» +Derivation eqType_ast on indt «a» took 0.002222 +Derivation lens_laws on indt «a» +Derivation lens_laws on indt «a» took 0.001800 +Derivation param1_congr on indt «a» +Derivation param1_congr on indt «a» took 0.002760 +Derivation param1_inhab on indt «a» +Derivation param1_inhab on indt «a» took 0.006038 +Derivation param1_functor on indt «a» +Derivation param1_functor on indt «a» took 0.005688 +Derivation fields on indt «a» +Derivation fields on indt «a» took 0.008827 +Derivation param1_trivial on indt «a» +Derivation param1_trivial on indt «a» took 0.009685 +Derivation induction on indt «a» +Derivation induction on indt «a» took 0.004594 +Derivation eqb on indt «a» +Derivation eqb on indt «a» took 0.008340 +Derivation eqbcorrect on indt «a» +Derivation eqbcorrect on indt «a» took 0.012177 +Derivation eqbOK on indt «a» +Derivation eqbOK on indt «a» took 0.003802 +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.011251 +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.004181 +Derivation eqType_ast on indt «b» +Derivation eqType_ast on indt «b» took 0.002161 +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.005657 +Derivation param1_functor on indt «b» +Derivation param1_functor on indt «b» took 0.005815 +Derivation fields on indt «b» +Derivation fields on indt «b» took 0.009916 +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.066100 +Derivation eqb on indt «b» +Derivation eqb on indt «b» took 0.017406 +Derivation eqbcorrect on indt «b» +Derivation eqbcorrect on indt «b» took 0.035148 +Derivation eqbOK on indt «b» +Derivation eqbOK on indt «b» took 0.004026 +a_eqb + : a -> a -> bool +b_eqb + : b -> b -> bool +elpi.tests.test_HOAS.P.p1 1 global (const «P.x») +@P.p1 +X0 global (const «P.x») +P.p1 P.x +some + (fun `A` (sort (typ «P.foo.u0»)) c0 \ + fun `f` (app [global (indt «P.foo»), c0]) c1 \ + app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) +elpi.tests.test_HOAS.P.p2 2 global (const «P.x») +@P.p2 +X0 global (const «P.x») +P.p2 P.x +some + (fun `A` (sort (typ «P.foo.u0»)) c0 \ + fun `f` (app [global (indt «P.foo»), c0]) c1 \ + app [primitive (proj elpi.tests.test_HOAS.P.p1 1), c1]) +Query assignments: + F = app [global (const «nat_of_bool»), global (indc «true»)] +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 +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 +Derivation param1 on const «Nat.add» +Derivation param1 on const «Nat.add» took 0.011738 +Derivation param2 on const «Nat.add» +Derivation param2 on const «Nat.add» took 0.014574 +Derivation eqb-alias on const «Nat.add» +Derivation eqb-alias on const «Nat.add» failed, continuing +Derivation eqbcorrect-alias on const «Nat.add» +Derivation eqbcorrect-alias on const «Nat.add» failed, continuing +Derivation eqbOK-alias on const «Nat.add» +Derivation eqbOK-alias on const «Nat.add» failed, continuing +is_add + : forall n : nat, is_nat n -> forall m : nat, is_nat m -> is_nat (n + m) Query assignments: D = parameter P explicit (sort (typ «r1.u0»)) c0 \ parameter p explicit c0 c1 \ @@ -8929,109 +7722,30 @@ 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 -«elpi.tests.test_HOAS.70» «elpi.tests.test_HOAS.71» -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.71 - elpi.tests.test_HOAS.70 - SORTS: - - WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= - elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.71 - elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.70» - I2 = «elpi.tests.test_HOAS.71» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= - elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.71 - elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 -SORTS: - -WEAK CONSTRAINTS: - - +_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 {{ nat; S; }} {{ nat; S; }} Query assignments: GR = const «Nat.add» L = {{ nat; S; }} S = {{ nat; S; }} -«elpi.tests.test_HOAS.72» «» -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.72} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.72 - SORTS: - - WEAK CONSTRAINTS: - - -different universe instance lengths -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.72} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.72 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - E = different universe instance lengths - GRF = indt «F» - GRfnat = const «fnat» - I1 = «elpi.tests.test_HOAS.72» - I2 = «» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.72} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.72} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.72 -SORTS: - -WEAK CONSTRAINTS: - - +COQC tests/test_lens_laws.v +[attribute elpi.loc + (leaf-loc + File "./tests/test_tactic.v", line 314, column 10, character 6765:), + attribute elpi.phase (leaf-str interp)] {{ X.a; }} {{ X.a; Nat.add; nat; }} {{ X.a; }} {{ X.a; Nat.add; nat; O; S; }} Query assignments: @@ -9042,646 +7756,442 @@ 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 «Z_of_nat»), - app [global (const «nat_of_bool»), global (indc «true»)]] -[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] -[foo (indt «nat»), foo (indt «bool»)] -[] -[foo (indt «nat»)] -Query assignments: - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.73» - I2 = «elpi.tests.test_HOAS.73» - U = «elpi.tests.test_HOAS.73» - UL1 = [«elpi.tests.test_HOAS.73»] -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.73} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.73} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.73 -SORTS: - -WEAK CONSTRAINTS: - - -File "./tests/test_param1.v", line 176, characters 0-66: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -COQC tests/test_param1_functor.v -COQC tests/test_param1_congr.v -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»), + [global (const «map»), global (indt «bool»), global (indt «nat»), fun `x` (global (indt «bool»)) c0 \ - app - [global (const «Z_of_nat»), app [global (const «nat_of_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_274_ = X0 - _uvk_275_ = X1 -Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3246 <= Set -Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because -elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 + _uvk_238_ = X0 + _uvk_239_ = X1 +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: - E = Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because -elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.74» - I2 = «elpi.tests.test_HOAS.75» - L1 = «elpi.tests.test_HOAS.74» - L2 = «elpi.tests.test_HOAS.75» - U1 = «elpi.tests.test_HOAS.74» - U2 = «elpi.tests.test_HOAS.75» + Body = some + (pglobal (const «toto») + «elpi.tests.test_HOAS.19 elpi.tests.test_HOAS.20») + C = «titi» + Term = prod `T1` (sort (typ «elpi.tests.test_HOAS.19»)) c0 \ + prod `T2` (sort (typ «elpi.tests.test_HOAS.20»)) c1 \ prod `x` c0 c2 \ c0 Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} |= - elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 + {elpi.tests.test_HOAS.20 elpi.tests.test_HOAS.19} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.75 - elpi.tests.test_HOAS.74 + 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) -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 +unit_is_tt : unit -> bool + : unit -> bool +peano_is_Zero : peano -> bool + : peano -> bool +peano_is_Succ : peano -> bool + : peano -> bool +option_is_None : forall A : Type, option A -> bool + : forall A : Type, option A -> bool +option_is_Some : forall A : Type, option A -> bool + : forall A : Type, option A -> bool +pair_is_Comma : forall A B : Type, pair A B -> bool + : forall A B : Type, pair A B -> bool +seq_is_Nil : forall A : Type, seq A -> bool + : forall A : Type, seq A -> bool +seq_is_Cons : forall A : Type, seq A -> bool + : forall A : Type, seq A -> bool +rose_is_Leaf : forall A : Type, rose A -> bool + : forall A : Type, rose A -> bool +rose_is_Node : forall A : Type, rose A -> bool + : forall A : Type, rose A -> bool +nest_is_NilN : forall A : Type, nest A -> bool + : forall A : Type, nest A -> bool +nest_is_ConsN : forall A : Type, nest A -> bool + : forall A : Type, nest A -> bool +w_is_via : forall A : Type, w A -> bool + : forall A : Type, w A -> bool +vect_is_VNil : forall (A : Type) (i : peano), vect A i -> bool + : forall (A : Type) (i : peano), vect A i -> bool +vect_is_VCons : forall (A : Type) (i : peano), vect A i -> bool + : forall (A : Type) (i : peano), vect A i -> bool +dyn_is_box : dyn -> bool + : dyn -> bool +zeta_is_Envelope : forall A : Type, zeta A -> bool + : forall A : Type, zeta A -> bool +beta_is_Redex : forall A : Type, beta A -> bool + : forall A : Type, beta A -> bool +iota_is_Why : iota -> bool + : iota -> bool +large_is_K1 + : large -> bool +large_is_K2 + : large -> bool +prim_int_is_PI + : prim_int -> bool +prim_float_is_PF + : prim_float -> bool +fo_record_is_Build_fo_record : fo_record -> bool + : fo_record -> bool +pa_record_is_Build_pa_record : forall A : Type, pa_record A -> bool + : forall A : Type, pa_record A -> bool +pr_record_is_Build_pr_record : forall A : Type, pr_record A -> bool + : forall A : Type, pr_record A -> bool +enum_is_E1 : enum -> bool + : enum -> bool +empty_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 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 -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= - elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - GRF = indt «F2» - I1 = «elpi.tests.test_HOAS.78» - I2 = «elpi.tests.test_HOAS.79» - L1 = «elpi.tests.test_HOAS.78» - L2 = «elpi.tests.test_HOAS.79» - U1 = «elpi.tests.test_HOAS.78» - U2 = «elpi.tests.test_HOAS.79» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= - elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 <= elpi.tests.test_HOAS.79 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.79 - elpi.tests.test_HOAS.78 -SORTS: - -WEAK CONSTRAINTS: - +forall A : Type, +eq_test A -> forall B : Type, eq_test B -> eq_test (pair A B) + : forall A : Type, + eq_test A -> forall B : Type, eq_test B -> eq_test (pair A B) +seq_eq : forall A : Type, eq_test A -> eq_test (seq A) + : forall A : Type, eq_test A -> eq_test (seq A) +rose_eq : forall A : Type, eq_test A -> eq_test (rose A) + : forall A : Type, eq_test A -> eq_test (rose A) +vect_eq : forall A : Type, eq_test A -> forall i : peano, eq_test (vect A i) + : forall A : Type, eq_test A -> forall i : peano, eq_test (vect A i) +zeta_eq : forall A : Type, eq_test A -> eq_test (zeta A) + : forall A : Type, eq_test A -> eq_test (zeta A) +beta_eq : forall A : Type, eq_test A -> eq_test (beta A) + : forall A : Type, eq_test A -> eq_test (beta A) +large_eq : eq_test large + : eq_test large +prim_int_eq : eq_test prim_int + : eq_test prim_int +prim_float_eq : eq_test prim_float + : eq_test prim_float +fo_record_eq : eq_test fo_record + : eq_test fo_record +pa_record_eq : forall A : Type, eq_test A -> eq_test (pa_record A) + : forall A : Type, eq_test A -> eq_test (pa_record A) +pr_record_eq : forall A : Type, eq_test A -> eq_test (pr_record A) + : forall A : Type, eq_test A -> eq_test (pr_record A) +enum_eq : eq_test enum + : eq_test enum +empty_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 +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 ] ] -File "./tests/test_derive.v", line 33, characters 2-9: -Warning: This command does not support this attribute: verbose. -[unsupported-attributes,parsing,default] -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: - +Entry constr is +[ LEFTA + [ "@"; global; univ_annot + | term LEVEL "8" ] ] -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.004334 -Derivation isK on indt «nat» -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: -Derivation isK on indt «nat» took 0.016219 - 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» -Derivation eq on indt «nat» - 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: - +Entry lconstr is +[ LEFTA + [ term LEVEL "200" ] ] -Derivation eq on indt «nat» took 0.015976 -Derivation invert on indt «nat» -Derivation invert on indt «nat» took 0.017927 -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 -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 -Skipping derivation param1_inhab on indt «nat» -since it has been already run -Skipping derivation param1_functor on indt «nat» -since it has been already run -Skipping derivation fields on indt «nat» since it has been already run -Derivation bcongr on indt «nat» -is_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 -Derivation bcongr on indt «nat» took 0.013858 -Derivation idx2inv on indt «nat» -is_beta_functor : func1 is_beta - : func1 is_beta -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» -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 -Derivation eqK on indt «nat» took 0.024210 -Skipping derivation eqbcorrect on indt «nat» since it has been already run -Derivation eqcorrect on indt «nat» -COQC tests/test_induction.v -Derivation eqcorrect on indt «nat» took 0.008366 -Skipping derivation eqbOK on indt «nat» since it has been already run -Derivation eqOK on indt «nat» -Derivation eqOK on indt «nat» took 0.003504 -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 +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 ] ] + +COQC tests/test_fields.v +[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)] Query assignments: - GR = indt «nat» -congr_is_tt : is_tt = is_tt - : is_tt = is_tt -congr_is_Zero : is_Zero = is_Zero - : is_Zero = is_Zero -congr_is_Succ -: -forall (x : peano) (p1 p2 : is_peano x), -p1 = p2 -> is_Succ x p1 = is_Succ x p2 - : forall (x : peano) (p1 p2 : is_peano x), - p1 = p2 -> is_Succ x p1 = is_Succ x p2 -congr_is_None -: -forall (A : Type) (PA : A -> Type), is_None A PA = is_None A PA - : forall (A : Type) (PA : A -> Type), is_None A PA = is_None A PA -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 + 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: - GR = indt «F» - I = «elpi.tests.test_HOAS.82» + 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.82} |= + {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.82 + elpi.tests.test_HOAS.24 + elpi.tests.test_HOAS.23 SORTS: WEAK CONSTRAINTS: -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 +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) (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, 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) (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 -hello [int 1, int 2, trm (global (indt «nat»)), str x] -Query assignments: - GR = indt «F» -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 -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: - - -COQC tests/test_API2.v +forall A : Type, pred A -> forall i : peano, is_peano i -> pred (vect A i) + : forall A : Type, + pred A -> forall i : peano, is_peano i -> pred (vect A i) +is_dyn : pred dyn + : pred dyn +is_zeta : forall A : Type, pred A -> pred (zeta A) + : forall A : Type, pred A -> pred (zeta A) +is_beta : forall A : Type, pred A -> pred (beta A) + : forall A : Type, pred A -> pred (beta A) +is_iota : pred iota + : pred iota +is_large : pred large + : pred large +is_prim_int : pred prim_int + : pred prim_int +is_prim_float : pred prim_float + : pred prim_float +is_fo_record : pred fo_record + : pred fo_record +is_pa_record : forall A : Type, pred A -> pred (pa_record A) + : forall A : Type, pred A -> pred (pa_record A) +is_pr_record : forall A : Type, pred A -> pred (pr_record A) + : forall A : Type, pred A -> pred (pr_record A) +is_enum : pred enum + : pred enum +is_ord : forall p : peano, is_peano p -> pred (ord p) + : forall p : peano, is_peano p -> pred (ord p) +is_ord2 : forall p : peano, is_peano p -> pred (ord2 p) + : forall p : peano, is_peano p -> pred (ord2 p) +is_val : pred val + : pred val Query assignments: GR = const «Ranalysis5.derivable_pt_lim_CVU» S = {{ Field_theory.AF_1_neq_0; Field_theory.AF_AR; Field_theory.AFdiv_def; @@ -11096,10 +9606,1603 @@ Ring_polynom.PEpow; RMicromega.CInv; Field_theory.FEdiv; Tauto.EQ; RMicromega.COpp; Field_theory.FEpow; }} Spilled_1 = 3375 - T = 2.721752 + T = 1.780714 +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: + + +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»))] +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 +_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 +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: + + +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: + 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: + + +x1 + : nat +w + : nat +Query assignments: + A4 = «elpi.tests.test_HOAS.36» + A5 = «elpi.tests.test_HOAS.37» + A6 = «elpi.tests.test_HOAS.38» + A7 = «elpi.tests.test_HOAS.39» + A8 = «elpi.tests.test_HOAS.40» + Arity = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ + sort (typ «elpi.tests.test_HOAS.30») + Arity1 = prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ + sort (typ «elpi.tests.test_HOAS.31») + Arity2 = prod `T` (sort (typ «elpi.tests.test_HOAS.32»)) c0 \ + sort (typ «elpi.tests.test_HOAS.32») + Arity4 = prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ + sort (typ «elpi.tests.test_HOAS.36») + Arity5 = prod `T` (sort (typ «elpi.tests.test_HOAS.37»)) c0 \ + sort (typ «elpi.tests.test_HOAS.37») + B = «Build_F» + B1 = «elpi.tests.test_HOAS.43» + B2 = «elpi.tests.test_HOAS.44» + BTy2 = prod `T` (sort (typ «elpi.tests.test_HOAS.42»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.42», c0] + BTy3 = prod `T` (sort (typ «elpi.tests.test_HOAS.43»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.43», c0] + BoN = none + BoT = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT1 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT2 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.47»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.47», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT4 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT5 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.50»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.50», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT6 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.64»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.64», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + BoT7 = some + (fun `T` (sort (typ «elpi.tests.test_HOAS.66»)) c0 \ + fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) c1 \ + match c1 + (fun `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.66», c0]) + c2 \ c0) [fun `t` c0 c2 \ c2]) + C1 = «elpi.tests.test_HOAS.54» + C2 = «elpi.tests.test_HOAS.55» + C3 = «elpi.tests.test_HOAS.58» + C4 = «elpi.tests.test_HOAS.59» + C5 = «elpi.tests.test_HOAS.62» + C6 = «elpi.tests.test_HOAS.63» + D1 = «elpi.tests.test_HOAS.49» + D2 = «elpi.tests.test_HOAS.50» + D3 = «elpi.tests.test_HOAS.51» + D4 = X0 + E5 = «elpi.tests.test_HOAS.66» + E6 = «elpi.tests.test_HOAS.67» + GRB = indc «Build_F» + GRF = indt «F» + GRn = const «n» + GRt = const «t» + I = «elpi.tests.test_HOAS.30» + I2 = «elpi.tests.test_HOAS.41» + I3 = «elpi.tests.test_HOAS.45» + I4 = «» + Ind = «F» + K = [«Build_F»] + KTys = [prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.30», c0]] + KTys1 = [prod `T` (sort (typ «elpi.tests.test_HOAS.31»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.31», c0]] + KTys3 = [prod `T` (sort (typ «elpi.tests.test_HOAS.33»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.33», c0]] + KTys4 = [prod `T` (sort (typ «elpi.tests.test_HOAS.36»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.36», c0]] + KTys6 = [prod `T` (sort (typ «elpi.tests.test_HOAS.38»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.38», c0]] + N = «n» + T = «t» + TyB = prod `T` (sort (typ «elpi.tests.test_HOAS.41»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.41», c0] + TyB2 = prod `T` (sort (typ «elpi.tests.test_HOAS.56»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.56», c0] + TyB3 = prod `T` (sort (typ «elpi.tests.test_HOAS.58»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.58», c0] + TyF = prod `T` (sort (typ «elpi.tests.test_HOAS.30»)) c0 \ + sort (typ «elpi.tests.test_HOAS.30») + TyF2 = prod `T` (sort (typ «elpi.tests.test_HOAS.52»)) c0 \ + sort (typ «elpi.tests.test_HOAS.52») + TyF3 = prod `T` (sort (typ «elpi.tests.test_HOAS.54»)) c0 \ + sort (typ «elpi.tests.test_HOAS.54») + TyN = global (indt «nat») + TyT = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ + c0 +Query assignments: + Y = global (indc «is_O») + TyT1 = prod `T` (sort (typ «elpi.tests.test_HOAS.46»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.46», c0]) c1 \ + c0 + TyT3 = prod `T` (sort (typ «elpi.tests.test_HOAS.48»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.48», c0]) c1 \ + c0 + TyT4 = prod `T` (sort (typ «elpi.tests.test_HOAS.49»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.49», c0]) c1 \ + c0 + TyT5 = prod `T` (sort (typ «elpi.tests.test_HOAS.51»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.51», c0]) c1 \ + c0 + TyT6 = prod `T` (sort (typ «elpi.tests.test_HOAS.60»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.60», c0]) c1 \ + c0 + TyT7 = prod `T` (sort (typ «elpi.tests.test_HOAS.62»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.62», c0]) c1 \ + c0 + Tyt = prod `T` (sort (typ «elpi.tests.test_HOAS.45»)) c0 \ + prod `f` (app [pglobal (indt «F») «elpi.tests.test_HOAS.45», c0]) c1 \ + c0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.67 elpi.tests.test_HOAS.66 elpi.tests.test_HOAS.65 + elpi.tests.test_HOAS.64 elpi.tests.test_HOAS.63 elpi.tests.test_HOAS.62 + elpi.tests.test_HOAS.61 elpi.tests.test_HOAS.60 elpi.tests.test_HOAS.59 + elpi.tests.test_HOAS.58 elpi.tests.test_HOAS.57 elpi.tests.test_HOAS.56 + elpi.tests.test_HOAS.55 elpi.tests.test_HOAS.54 elpi.tests.test_HOAS.53 + elpi.tests.test_HOAS.52 elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.50 + elpi.tests.test_HOAS.49 elpi.tests.test_HOAS.48 elpi.tests.test_HOAS.47 + elpi.tests.test_HOAS.46 elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 + elpi.tests.test_HOAS.43 elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 + elpi.tests.test_HOAS.40 elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 + elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 + elpi.tests.test_HOAS.34 elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 + elpi.tests.test_HOAS.31 elpi.tests.test_HOAS.30} |= + +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44 elpi.tests.test_HOAS.43 + elpi.tests.test_HOAS.42 elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40 + elpi.tests.test_HOAS.39 elpi.tests.test_HOAS.38 elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 elpi.tests.test_HOAS.35 elpi.tests.test_HOAS.34 + elpi.tests.test_HOAS.33 elpi.tests.test_HOAS.32 elpi.tests.test_HOAS.31 + elpi.tests.test_HOAS.30} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.45 + elpi.tests.test_HOAS.44 + elpi.tests.test_HOAS.43 + elpi.tests.test_HOAS.42 + elpi.tests.test_HOAS.41 + elpi.tests.test_HOAS.40 + elpi.tests.test_HOAS.39 + elpi.tests.test_HOAS.38 + elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 + elpi.tests.test_HOAS.35 + elpi.tests.test_HOAS.34 + elpi.tests.test_HOAS.33 + elpi.tests.test_HOAS.32 + elpi.tests.test_HOAS.31 + elpi.tests.test_HOAS.30 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + LP = «Coq.ZArith.Znat» + MP = «Coq.ZArith.Znat.N2Z» +[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] +[foo (indt «nat»), foo (indt «bool»)] +[] +[foo (indt «nat»)] +«elpi.tests.test_HOAS.68» +parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) +«elpi.tests.test_HOAS.68» +parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) +parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) +Query assignments: + Decl = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + Decl1 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.68»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.68»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + Decl2 = parameter T explicit (sort (typ «elpi.tests.test_HOAS.69»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.69»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + GRF = indt «F» + I = «elpi.tests.test_HOAS.68» + Ind = «F» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.69 + elpi.tests.test_HOAS.68 +SORTS: + +WEAK CONSTRAINTS: + + +derive.param1_trivial: wrong shape is_nest +. It does not look like a unary parametricity translation of an inductive with no indexes. Query assignments: T = global (const «int») X = primitive (uint63 99) +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 +«elpi.tests.test_HOAS.70» «elpi.tests.test_HOAS.71» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.71 + elpi.tests.test_HOAS.70 + SORTS: + + WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= + elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.71 + elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.70» + I2 = «elpi.tests.test_HOAS.71» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} |= + elpi.tests.test_HOAS.70 = elpi.tests.test_HOAS.71 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.71 elpi.tests.test_HOAS.70} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.71 + elpi.tests.test_HOAS.70 := elpi.tests.test_HOAS.71 +SORTS: + +WEAK CONSTRAINTS: + + +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_ +derive.param1_trivial: wrong shape is_vect A PA +. It does not look like a unary parametricity translation of an inductive with no indexes. +«elpi.tests.test_HOAS.72» «» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.72} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.72} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.72 + SORTS: + + WEAK CONSTRAINTS: + + +different universe instance lengths +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.72} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.72} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.72 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + E = different universe instance lengths + GRF = indt «F» + GRfnat = const «fnat» + I1 = «elpi.tests.test_HOAS.72» + I2 = «» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.72} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.72} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.72 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + T = global (const «float») + X = primitive (float64 993000) +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] +Query assignments: + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.73» + I2 = «elpi.tests.test_HOAS.73» + U = «elpi.tests.test_HOAS.73» + UL1 = [«elpi.tests.test_HOAS.73»] +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.73} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.73} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.73 +SORTS: + +WEAK CONSTRAINTS: + + +empty_fields_t : positive -> Type + : positive -> Type +empty_fields : forall n : empty, empty_fields_t (empty_tag n) + : forall n : empty, empty_fields_t (empty_tag n) +empty_construct +: +forall p : positive, empty_fields_t p -> Datatypes.option empty + : forall p : positive, empty_fields_t p -> Datatypes.option empty +empty_constructP +: +forall n : empty, +empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n + : forall n : empty, + empty_construct (empty_tag n) (empty_fields n) = Datatypes.Some n +unit_fields_t : positive -> Type + : positive -> Type +unit_fields : forall n : unit, unit_fields_t (unit_tag n) + : forall n : unit, unit_fields_t (unit_tag n) +unit_construct +: +forall p : positive, unit_fields_t p -> Datatypes.option unit + : forall p : positive, unit_fields_t p -> Datatypes.option unit +unit_constructP +: +forall n : unit, +unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n + : forall n : unit, + unit_construct (unit_tag n) (unit_fields n) = Datatypes.Some n +peano_fields_t : positive -> Type + : positive -> Type +peano_fields : forall n : peano, peano_fields_t (peano_tag n) + : forall n : peano, peano_fields_t (peano_tag n) +peano_construct +: +forall p : positive, peano_fields_t p -> Datatypes.option peano + : forall p : positive, peano_fields_t p -> Datatypes.option peano +peano_constructP +: +forall n : peano, +peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n + : forall n : peano, + peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n +option_fields_t : Type -> positive -> Type + : Type -> positive -> Type +option_fields +: +forall (A : Type) (l : option A), option_fields_t A (option_tag A l) + : forall (A : Type) (l : option A), option_fields_t A (option_tag A l) +option_construct +: +forall (A : Type) (p : positive), +option_fields_t A p -> Datatypes.option (option A) + : forall (A : Type) (p : positive), + option_fields_t A p -> Datatypes.option (option A) +option_constructP +: +forall (A : Type) (l : option A), +option_construct A (option_tag A l) (option_fields A l) = Datatypes.Some l + : forall (A : Type) (l : option A), + option_construct A (option_tag A l) (option_fields A l) = + Datatypes.Some l +pair_fields_t : Type -> Type -> positive -> Type + : Type -> Type -> positive -> Type +pair_fields +: +forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) + : forall (A B : Type) (l : pair A B), pair_fields_t A B (pair_tag A B l) +pair_construct +: +forall (A B : Type) (p : positive), +pair_fields_t A B p -> Datatypes.option (pair A B) + : forall (A B : Type) (p : positive), + pair_fields_t A B p -> Datatypes.option (pair A B) +pair_constructP +: +forall (A B : Type) (l : pair A B), +pair_construct A B (pair_tag A B l) (pair_fields A B l) = Datatypes.Some l + : forall (A B : Type) (l : pair A B), + pair_construct A B (pair_tag A B l) (pair_fields A B l) = + Datatypes.Some l +seq_fields_t : Type -> positive -> Type + : Type -> positive -> Type +seq_fields : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) + : forall (A : Type) (l : seq A), seq_fields_t A (seq_tag A l) +seq_construct +: +forall (A : Type) (p : positive), +seq_fields_t A p -> Datatypes.option (seq A) + : forall (A : Type) (p : positive), + seq_fields_t A p -> Datatypes.option (seq A) +seq_constructP +: +forall (A : Type) (l : seq A), +seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l + : forall (A : Type) (l : seq A), + seq_construct A (seq_tag A l) (seq_fields A l) = Datatypes.Some l +rose_fields_t : Type -> positive -> Type + : Type -> positive -> Type +rose_fields : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) + : forall (A : Type) (l : rose A), rose_fields_t A (rose_tag A l) +rose_construct +: +forall (A : Type) (p : positive), +rose_fields_t A p -> Datatypes.option (rose A) + : forall (A : Type) (p : positive), + rose_fields_t A p -> Datatypes.option (rose A) +rose_constructP +: +forall (A : Type) (l : rose A), +rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l + : forall (A : Type) (l : rose A), + rose_construct A (rose_tag A l) (rose_fields A l) = Datatypes.Some l +beta_fields_t : Type -> positive -> Type + : Type -> positive -> Type +beta_fields : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) + : forall (A : Type) (l : beta A), beta_fields_t A (beta_tag A l) +beta_construct +: +forall (A : Type) (p : positive), +beta_fields_t A p -> Datatypes.option (beta A) + : forall (A : Type) (p : positive), + beta_fields_t A p -> Datatypes.option (beta A) +beta_constructP +: +forall (A : Type) (l : beta A), +beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l + : forall (A : Type) (l : beta A), + beta_construct A (beta_tag A l) (beta_fields A l) = Datatypes.Some l +large_fields_t : positive -> Type + : positive -> Type +large_fields : forall n : large, large_fields_t (large_tag n) + : forall n : large, large_fields_t (large_tag n) +large_construct +: +forall p : positive, large_fields_t p -> Datatypes.option large + : forall p : positive, large_fields_t p -> Datatypes.option large +large_constructP +: +forall n : large, +large_construct (large_tag n) (large_fields n) = Datatypes.Some n + : forall n : large, + large_construct (large_tag n) (large_fields n) = Datatypes.Some n +prim_int_fields_t : positive -> Type + : positive -> Type +prim_int_fields : forall n : prim_int, prim_int_fields_t (prim_int_tag n) + : forall n : prim_int, prim_int_fields_t (prim_int_tag n) +prim_int_construct +: +forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int + : forall p : positive, prim_int_fields_t p -> Datatypes.option prim_int +prim_int_constructP +: +forall n : prim_int, +prim_int_construct (prim_int_tag n) (prim_int_fields n) = Datatypes.Some n + : forall n : prim_int, + prim_int_construct (prim_int_tag n) (prim_int_fields n) = + Datatypes.Some n +pa_record_fields_t : Type -> positive -> Type + : Type -> positive -> Type +pa_record_fields +: +forall (A : Type) (l : pa_record A), pa_record_fields_t A (pa_record_tag A l) + : forall (A : Type) (l : pa_record A), + pa_record_fields_t A (pa_record_tag A l) +pa_record_construct +: +forall (A : Type) (p : positive), +pa_record_fields_t A p -> Datatypes.option (pa_record A) + : forall (A : Type) (p : positive), + pa_record_fields_t A p -> Datatypes.option (pa_record A) +pa_record_constructP +: +forall (A : Type) (l : pa_record A), +pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = +Datatypes.Some l + : forall (A : Type) (l : pa_record A), + pa_record_construct A (pa_record_tag A l) (pa_record_fields A l) = + Datatypes.Some l +pr_record_fields_t : Type -> positive -> Type + : Type -> positive -> Type +pr_record_fields +: +forall (A : Type) (l : pr_record A), pr_record_fields_t A (pr_record_tag A l) + : forall (A : Type) (l : pr_record A), + pr_record_fields_t A (pr_record_tag A l) +pr_record_construct +: +forall (A : Type) (p : positive), +pr_record_fields_t A p -> Datatypes.option (pr_record A) + : forall (A : Type) (p : positive), + pr_record_fields_t A p -> Datatypes.option (pr_record A) +pr_record_constructP +: +forall (A : Type) (l : pr_record A), +pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = +Datatypes.Some l + : forall (A : Type) (l : pr_record A), + pr_record_construct A (pr_record_tag A l) (pr_record_fields A l) = + Datatypes.Some l +sigma_bool_fields_t : positive -> Type + : positive -> Type +sigma_bool_fields +: +forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) + : forall l : sigma_bool, sigma_bool_fields_t (sigma_bool_tag l) +sigma_bool_construct +: +forall p : positive, sigma_bool_fields_t p -> Datatypes.option sigma_bool + : forall p : positive, + sigma_bool_fields_t p -> Datatypes.option sigma_bool +sigma_bool_constructP +: +forall l : sigma_bool, +sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = +Datatypes.Some l + : forall l : sigma_bool, + sigma_bool_construct (sigma_bool_tag l) (sigma_bool_fields l) = + Datatypes.Some l +ord_fields_t : peano -> positive -> Type + : peano -> positive -> Type +ord_fields : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) + : forall (p : peano) (o : ord p), ord_fields_t p (ord_tag p o) +ord_construct +: +forall (n : peano) (p : positive), +ord_fields_t n p -> Datatypes.option (ord n) + : forall (n : peano) (p : positive), + ord_fields_t n p -> Datatypes.option (ord n) +ord_constructP +: +forall (p : peano) (o : ord p), +ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o + : forall (p : peano) (o : ord p), + ord_construct p (ord_tag p o) (ord_fields p o) = Datatypes.Some o +ord2_fields_t : peano -> positive -> Type + : peano -> positive -> Type +ord2_fields : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) + : forall (p : peano) (o : ord2 p), ord2_fields_t p (ord2_tag p o) +ord2_construct +: +forall (n : peano) (p : positive), +ord2_fields_t n p -> Datatypes.option (ord2 n) + : forall (n : peano) (p : positive), + ord2_fields_t n p -> Datatypes.option (ord2 n) +ord2_constructP +: +forall (p : peano) (o : ord2 p), +ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o + : forall (p : peano) (o : ord2 p), + ord2_construct p (ord2_tag p o) (ord2_fields p o) = Datatypes.Some o +val_fields_t : positive -> Type + : positive -> Type +val_fields : forall i : val, val_fields_t (val_tag i) + : forall i : val, val_fields_t (val_tag i) +val_construct : forall p : positive, val_fields_t p -> Datatypes.option val + : forall p : positive, val_fields_t p -> Datatypes.option val +val_constructP +: +forall v : val, val_construct (val_tag v) (val_fields v) = Datatypes.Some v + : forall v : val, + val_construct (val_tag v) (val_fields v) = Datatypes.Some v +COQC tests/test_eqb.v +Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because +elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 +Query assignments: + E = Cannot enforce elpi.tests.test_HOAS.74 = elpi.tests.test_HOAS.75 because +elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.74» + I2 = «elpi.tests.test_HOAS.75» + L1 = «elpi.tests.test_HOAS.74» + L2 = «elpi.tests.test_HOAS.75» + U1 = «elpi.tests.test_HOAS.74» + U2 = «elpi.tests.test_HOAS.75» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} |= + elpi.tests.test_HOAS.74 < elpi.tests.test_HOAS.75 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.75 elpi.tests.test_HOAS.74} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.75 + elpi.tests.test_HOAS.74 +SORTS: + +WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= + elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.79 + elpi.tests.test_HOAS.78 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F2» + I1 = «elpi.tests.test_HOAS.78» + I2 = «elpi.tests.test_HOAS.79» + L1 = «elpi.tests.test_HOAS.78» + L2 = «elpi.tests.test_HOAS.79» + U1 = «elpi.tests.test_HOAS.78» + U2 = «elpi.tests.test_HOAS.79» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} |= + elpi.tests.test_HOAS.78 < elpi.tests.test_HOAS.79 + elpi.tests.test_HOAS.78 <= elpi.tests.test_HOAS.79 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.79 elpi.tests.test_HOAS.78} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.79 + elpi.tests.test_HOAS.78 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + _uvk_323_ = X0 +File "./tests/test_param1.v", line 176, characters 0-66: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +COQC tests/test_param1_functor.v +COQC tests/test_param1_congr.v +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: + + +hello [int 1, int 2, trm (global (indt «nat»)), str x] +Debug: Cannot enforce elpi.apps.derive.tests.test_derive.3246 <= Set +empty_eqb : eq_test2 empty empty + : eq_test2 empty empty +unit_eqb : eq_test2 unit unit + : eq_test2 unit unit +peano_eqb : eq_test2 peano peano + : eq_test2 peano peano +option_eqb : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) + : forall A : Type, eq_test2 A A -> eq_test2 (option A) (option A) +pair_eqb +: +forall A : Type, +eq_test2 A A -> +forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) + : forall A : Type, + eq_test2 A A -> + forall B : Type, eq_test2 B B -> eq_test2 (pair A B) (pair A B) +seq_eqb : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) + : forall A : Type, eq_test2 A A -> eq_test2 (seq A) (seq A) +rose_eqb : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) + : forall A : Type, eq_test2 A A -> eq_test2 (rose A) (rose A) +beta_eqb : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) + : forall A : Type, eq_test2 A A -> eq_test2 (beta A) (beta A) +prim_int_eqb : eq_test2 prim_int prim_int + : eq_test2 prim_int prim_int +fo_record_eqb : eq_test2 fo_record fo_record + : eq_test2 fo_record fo_record +pa_record_eqb +: +forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) + : forall A : Type, eq_test2 A A -> eq_test2 (pa_record A) (pa_record A) +pr_record_eqb +: +forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) + : forall A : Type, eq_test2 A A -> eq_test2 (pr_record A) (pr_record A) +enum_eqb : eq_test2 enum enum + : eq_test2 enum enum +sigma_bool_eqb : eq_test2 sigma_bool sigma_bool + : eq_test2 sigma_bool sigma_bool +ord_eqb : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) + : forall p1 p2 : peano, eq_test2 (ord p1) (ord p2) +ord2_eqb : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) + : forall p1 p2 : peano, eq_test2 (ord2 p1) (ord2 p2) +val_eqb : eq_test2 val val + : eq_test2 val val +alias_eqb : eq_test2 alias alias + : eq_test2 alias alias +Query assignments: + GR = indt «nat» +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.005221 +Derivation isK on indt «nat» +Derivation isK on indt «nat» took 0.008305 +Derivation eq on indt «nat» +Derivation eq on indt «nat» took 0.008133 +Derivation invert on indt «nat» +Derivation invert on indt «nat» took 0.009663 +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.010627 +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.010902 +Skipping derivation eqbcorrect on indt «nat» since it has been already run +Derivation eqcorrect on indt «nat» +Derivation eqcorrect on indt «nat» took 0.004275 +Skipping derivation eqbOK on indt «nat» since it has been already run +Derivation eqOK on indt «nat» +Derivation eqOK on indt «nat» took 0.003968 +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 +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 +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 +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 +COQC tests/test_API2.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: + 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: + + +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 +Query assignments: + GR = indt «F» +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: + + 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) @@ -11160,6 +11263,22 @@ (forall x : A, PA x -> P (Leaf A x)) -> (forall l : seq (rose A), is_seq (rose A) P l -> P (Node A l)) -> forall x : rose A, is_rose A PA x -> P x +«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: + + nest_induction : forall P : forall A : Type, (A -> Type) -> nest A -> Type, @@ -11773,195 +11892,6 @@ 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 -«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: - 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: - - -unit_bcongr_tt : reflect (tt = tt) true - : reflect (tt = tt) true -peano_bcongr_Zero : reflect (Zero = Zero) true - : reflect (Zero = Zero) true -peano_bcongr_Succ -: -forall (x y : peano) (b : bool), -reflect (x = y) b -> reflect (Succ x = Succ y) b - : forall (x y : peano) (b : bool), - reflect (x = y) b -> reflect (Succ x = Succ y) b -option_bcongr_None : forall A : Type, reflect (None A = None A) true - : forall A : Type, reflect (None A = None A) true -option_bcongr_Some -: -forall (A : Type) (x y : A) (b : bool), -reflect (x = y) b -> reflect (Some A x = Some A y) b - : forall (A : Type) (x y : A) (b : bool), - reflect (x = y) b -> reflect (Some A x = Some A y) b -pair_bcongr_Comma -: -forall (A B : Type) (x1 x2 : A) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : B) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect (Comma A B x1 y1 = Comma A B x2 y2) (b1 && b2) - : forall (A B : Type) (x1 x2 : A) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : B) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect (Comma A B x1 y1 = Comma A B x2 y2) (b1 && b2) -seq_bcongr_Nil : forall A : Type, reflect (Nil A = Nil A) true - : forall A : Type, reflect (Nil A = Nil A) true -seq_bcongr_Cons -: -forall (A : Type) (x y : A) (b1 : bool), -reflect (x = y) b1 -> -forall (xs ys : seq A) (b2 : bool), -reflect (xs = ys) b2 -> reflect (Cons A x xs = Cons A y ys) (b1 && b2) - : forall (A : Type) (x y : A) (b1 : bool), - reflect (x = y) b1 -> - forall (xs ys : seq A) (b2 : bool), - reflect (xs = ys) b2 -> reflect (Cons A x xs = Cons A y ys) (b1 && b2) -rose_bcongr_Leaf -: -forall (A : Type) (x y : A) (b : bool), -reflect (x = y) b -> reflect (Leaf A x = Leaf A y) b - : forall (A : Type) (x y : A) (b : bool), - reflect (x = y) b -> reflect (Leaf A x = Leaf A y) b -rose_bcongr_Node -: -forall (A : Type) (l1 l2 : seq (rose A)) (b : bool), -reflect (l1 = l2) b -> reflect (Node A l1 = Node A l2) b - : forall (A : Type) (l1 l2 : seq (rose A)) (b : bool), - reflect (l1 = l2) b -> reflect (Node A l1 = Node A l2) b -nest_bcongr_NilN : forall A : Type, reflect (NilN A = NilN A) true - : forall A : Type, reflect (NilN A = NilN A) true -nest_bcongr_ConsN -: -forall (A : Type) (x y : A) (b1 : bool), -reflect (x = y) b1 -> -forall (xs ys : nest (pair A A)) (b2 : bool), -reflect (xs = ys) b2 -> reflect (ConsN A x xs = ConsN A y ys) (b1 && b2) - : forall (A : Type) (x y : A) (b1 : bool), - reflect (x = y) b1 -> - forall (xs ys : nest (pair A A)) (b2 : bool), - reflect (xs = ys) b2 -> - reflect (ConsN A x xs = ConsN A y ys) (b1 && b2) -w_bcongr_via -: -forall (A : Type) (f g : A -> w A) (b : bool), -reflect (f = g) b -> reflect (via A f = via A g) b - : forall (A : Type) (f g : A -> w A) (b : bool), - reflect (f = g) b -> reflect (via A f = via A g) b -zeta_bcongr_Envelope -: -forall (A : Type) (x1 x2 : A) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : A) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect (Envelope A x1 y1 = Envelope A x2 y2) (b1 && b2) - : forall (A : Type) (x1 x2 : A) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : A) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect (Envelope A x1 y1 = Envelope A x2 y2) (b1 && b2) -beta_bcongr_Redex -: -forall (A : Type) (x y : A) (b : bool), -reflect (x = y) b -> reflect (Redex A x = Redex A y) b - : forall (A : Type) (x y : A) (b : bool), - reflect (x = y) b -> reflect (Redex A x = Redex A y) b -prim_int_bcongr_PI -: -forall (x y : PrimInt63.int) (b : bool), -reflect (x = y) b -> reflect (PI x = PI y) b - : forall (x y : PrimInt63.int) (b : bool), - reflect (x = y) b -> reflect (PI x = PI y) b -prim_float_bcongr_PF -: -forall (x y : PrimFloat.float) (b : bool), -reflect (x = y) b -> reflect (PF x = PF y) b - : forall (x y : PrimFloat.float) (b : bool), - reflect (x = y) b -> reflect (PF x = PF y) b -fo_record_bcongr_Build_fo_record -: -forall (x1 x2 : peano) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : unit) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect ({| f1 := x1; f2 := y1 |} = {| f1 := x2; f2 := y2 |}) (b1 && b2) - : forall (x1 x2 : peano) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : unit) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect ({| f1 := x1; f2 := y1 |} = {| f1 := x2; f2 := y2 |}) - (b1 && b2) -pa_record_bcongr_Build_pa_record -: -forall (A : Type) (x1 x2 : peano) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : A) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect ({| f3 := x1; f4 := y1 |} = {| f3 := x2; f4 := y2 |}) (b1 && b2) - : forall (A : Type) (x1 x2 : peano) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : A) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect ({| f3 := x1; f4 := y1 |} = {| f3 := x2; f4 := y2 |}) - (b1 && b2) -pr_record_bcongr_Build_pr_record -: -forall (A : Type) (x1 x2 : peano) (b1 : bool), -reflect (x1 = x2) b1 -> -forall (y1 y2 : A) (b2 : bool), -reflect (y1 = y2) b2 -> -reflect ({| pf3 := x1; pf4 := y1 |} = {| pf3 := x2; pf4 := y2 |}) (b1 && b2) - : forall (A : Type) (x1 x2 : peano) (b1 : bool), - reflect (x1 = x2) b1 -> - forall (y1 y2 : A) (b2 : bool), - reflect (y1 = y2) b2 -> - reflect ({| pf3 := x1; pf4 := y1 |} = {| pf3 := x2; pf4 := y2 |}) - (b1 && b2) -enum_bcongr_E1 : reflect (E1 = E1) true - : reflect (E1 = E1) true -enum_bcongr_E2 : reflect (E2 = E2) true - : reflect (E2 = E2) true -enum_bcongr_E3 : reflect (E3 = E3) true - : reflect (E3 = E3) true Universe constraints: ------------------ Universe constraints: UNIVERSES: @@ -12022,44 +11952,10 @@ : Type@{elpi.tests.test_HOAS.88} (* {elpi.tests.test_HOAS.88} |= Set < elpi.tests.test_HOAS.88 *) Box not a defined object. -COQC tests/test_eqK.v -Query assignments: - Decl = record Rec (sort (typ «elpi.tests.test_API_env.31»)) BuildRec - (field [] f (sort (typ «elpi.tests.test_API_env.32»)) c0 \ end-record) - _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: - T = global (const «float») - X = primitive (float64 993000) + X1 = «x1» + X2 = «x2» + X3 = «x3» sort (typ «Set») Query assignments: U = «elpi.tests.test_HOAS.89» @@ -12084,13 +11980,6 @@ Arguments leaf A%type_scope _ Arguments node A%type_scope _ _%list_scope Query assignments: - X1 = «x1» - X2 = «x2» - X3 = «x3» -Query assignments: - LP = «Coq.ZArith.Znat» - MP = «Coq.ZArith.Znat.N2Z» -Query assignments: M = [[mode-ground], [mode-input]] parameter A explicit (sort (typ «elpi.tests.test_HOAS.98»)) c0 \ inductive tree tt (arity (sort (typ «elpi.tests.test_HOAS.99»))) c1 \ @@ -12161,202 +12050,155 @@ 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 -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 -1 -1 -1.000000 -1.2 -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 +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 @@ -12482,65 +12324,138 @@ 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 +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 (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 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) (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) (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) (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) (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, (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 (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 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 126, characters 0-16: -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. -Pred.Pred_to_Predinv : forall T : RoseTree, Pred T -> Pred.Predinv T - : forall T : RoseTree, Pred T -> Pred.Predinv T -File "./tests/test_API2.v", line 134, characters 0-14: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] -wimpls.wimpls not a defined object. -wimpls.Kwi not a defined object. -Kwi 3 eq_refl - : wimpls -where -?rtree0 : [ |- rtree nat] +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 |} +1 +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 +1 +COQC tests/test_eqcorrect.v +W_tag : forall A : Type, W A -> BinNums.positive + : forall A : Type, W A -> BinNums.positive +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, @@ -12941,6 +12856,127 @@ 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] +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 +empty_eq_correct : correct empty is_empty empty_eq + : correct empty is_empty empty_eq +unit_eq_correct : correct unit is_unit unit_eq + : correct unit is_unit unit_eq +peano_eq_correct : correct peano is_peano peano_eq + : correct peano is_peano peano_eq +option_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (option A) (is_option A (eq_axiom_at A f)) (option_eq A f) + : forall (A : Type) (f : eq_test A), + correct (option A) (is_option A (eq_axiom_at A f)) (option_eq A f) +pair_eq_correct +: +forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B), +correct (pair A B) (is_pair A (eq_axiom_at A f) B (eq_axiom_at B g)) + (pair_eq A f B g) + : forall (A : Type) (f : eq_test A) (B : Type) (g : eq_test B), + correct (pair A B) (is_pair A (eq_axiom_at A f) B (eq_axiom_at B g)) + (pair_eq A f B g) +seq_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (seq A) (is_seq A (eq_axiom_at A f)) (seq_eq A f) + : forall (A : Type) (f : eq_test A), + correct (seq A) (is_seq A (eq_axiom_at A f)) (seq_eq A f) +rose_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (rose A) (is_rose A (eq_axiom_at A f)) (rose_eq A f) + : forall (A : Type) (f : eq_test A), + correct (rose A) (is_rose A (eq_axiom_at A f)) (rose_eq A f) +zeta_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (zeta A) (is_zeta A (eq_axiom_at A f)) (zeta_eq A f) + : forall (A : Type) (f : eq_test A), + correct (zeta A) (is_zeta A (eq_axiom_at A f)) (zeta_eq A f) +beta_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (beta A) (is_beta A (eq_axiom_at A f)) (beta_eq A f) + : forall (A : Type) (f : eq_test A), + correct (beta A) (is_beta A (eq_axiom_at A f)) (beta_eq A f) +prim_int_eq_correct + : correct prim_int is_prim_int prim_int_eq +fo_record_eq_correct : correct fo_record is_fo_record fo_record_eq + : correct fo_record is_fo_record fo_record_eq +pa_record_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (pa_record A) (is_pa_record A (eq_axiom_at A f)) (pa_record_eq A f) + : forall (A : Type) (f : eq_test A), + correct (pa_record A) (is_pa_record A (eq_axiom_at A f)) + (pa_record_eq A f) +pr_record_eq_correct +: +forall (A : Type) (f : eq_test A), +correct (pr_record A) (is_pr_record A (eq_axiom_at A f)) (pr_record_eq A f) + : forall (A : Type) (f : eq_test A), + correct (pr_record A) (is_pr_record A (eq_axiom_at A f)) + (pr_record_eq A f) +enum_eq_correct : correct enum is_enum enum_eq + : correct enum is_enum enum_eq +derive.param1_trivial: wrong shape is_Pred +. It does not look like a unary parametricity translation of an inductive with no indexes. +Pred.Pred_to_Predinv : forall T : RoseTree, Pred T -> Pred.Predinv T + : forall T : RoseTree, Pred T -> Pred.Predinv T +File "./tests/test_API2.v", line 126, characters 0-16: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] +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 134, characters 0-14: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] is_empty_trivial : trivial empty is_empty : trivial empty is_empty is_unit_trivial : trivial unit is_unit @@ -13104,15 +13140,15 @@ C2 = «times» X1 = tt X2 = ff -Finished transaction in 26.312 secs (20.103u,0.s) (successful) Query assignments: C1 = «x» Query assignments: XX = «elpi.tests.test_API2.xx» -Finished transaction in 0.474 secs (0.365u,0.006s) (successful) Query assignments: C1 = «x» M = «elpi.tests.test_API2.xx» +Query assignments: + XX = «elpi.tests.test_API2.xx2» empty_eq_OK : ok empty empty_eq : ok empty empty_eq unit_eq_OK : ok unit unit_eq @@ -13174,7 +13210,8 @@ enum_eq_OK : ok enum enum_eq : ok enum enum_eq Query assignments: - XX = «elpi.tests.test_API2.xx2» + C1 = «x» + M = «elpi.tests.test_API2.xx2» dlist_eqOK : forall (A : Type) (f : A -> A -> bool), ok A f -> ok (dlist A) (dlist_eq A f) @@ -13182,7 +13219,36 @@ ok A f -> ok (dlist A) (dlist_eq A f) Query assignments: C1 = «x» - M = «elpi.tests.test_API2.xx2» + M = «elpi.tests.test_API2.xx3» +Finished transaction in 54.853 secs (41.732u,0.088s) (successful) +Query assignments: + _uvk_1_ = X0 + _uvk_2_ = X1 +Syntactic constraints: + evar (X1) (X2) (X1) /* suspended on X1 */ + evar X3 (sort (typ «elpi.tests.test_API2.6»)) (X2) /* suspended on X3, X2 */ + evar (X0) (X4) (X0) /* suspended on X0 */ + evar X5 (sort (typ «elpi.tests.test_API2.5»)) (X4) /* suspended on X5, X4 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API2.6 elpi.tests.test_API2.5} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α4 + α5 +WEAK CONSTRAINTS: + + +Non-discriminated database +Unfoldable variable definitions: all +Unfoldable constant definitions: all +Cut: emp +For any goal -> +For xeq -> exact xxx(level 0, pattern 0 = _, id 0) + 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 @@ -13204,9 +13270,25 @@ alias_eqb_refl : eqb_reflexive alias_eqb : eqb_reflexive alias_eqb COQC tests/test_eqbOK.v +Finished transaction in 0.523 secs (0.515u,0.s) (successful) Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx3» + _uvk_19_ = «elpi.tests.test_API2.7» +Universe constraints: +UNIVERSES: + +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API2.7} +FLEXIBLE UNIVERSES: + elpi.tests.test_API2.7 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + Spilled_1 = «elpi.tests.test_API2.T» +Query assignments: + GR = const const EXN PRINTING: Not_found 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 @@ -13225,34 +13307,6 @@ 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: - _uvk_1_ = X0 - _uvk_2_ = X1 -Syntactic constraints: - evar (X1) (X2) (X1) /* suspended on X1 */ - evar X3 (sort (typ «elpi.tests.test_API2.6»)) (X2) /* suspended on X3, X2 */ - evar (X0) (X4) (X0) /* suspended on X0 */ - evar X5 (sort (typ «elpi.tests.test_API2.5»)) (X4) /* suspended on X5, X4 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API2.6 elpi.tests.test_API2.5} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α4 - α5 -WEAK CONSTRAINTS: - - -Non-discriminated database -Unfoldable variable definitions: all -Unfoldable constant definitions: all -Cut: emp -For any goal -> -For xeq -> exact xxx(level 0, pattern 0 = _, id 0) - 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 @@ -13260,25 +13314,10 @@ COQDEP VFILES Query assignments: - _uvk_19_ = «elpi.tests.test_API2.7» -Universe constraints: -UNIVERSES: - -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API2.7} -FLEXIBLE UNIVERSES: - elpi.tests.test_API2.7 -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - Spilled_1 = «elpi.tests.test_API2.T» + Spilled_1 = «elpi.tests.test_API2.F» + Spilled_2 = «elpi.tests.test_API2.X» COQC tests/test_assumption.v COQC tests/test_constructor.v -Query assignments: - GR = const const EXN PRINTING: Not_found COQC tests/test_intro.v COQC tests/test_clear.v COQC tests/test_fail.v @@ -13286,49 +13325,52 @@ COQC tests/test_injection.v COQC tests/test_case.v COQC tests/test_generalize.v +«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) + COQC tests/test_cycle.v COQC examples/usage_eltac.v d : nat +Query assignments: + Spilled_1 = «elpi.tests.test_API2.F» + Spilled_2 = «elpi.tests.test_API2.X» trying i = i -Debug: elpi lets escape exception: not enough goals: 3 < 3 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 +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 -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.H» Query assignments: - Spilled_1 = «elpi.tests.test_API2.F» - Spilled_2 = «elpi.tests.test_API2.X» + H = «elpi.tests.test_API2.H» +Module H : Sig Definition id : nat -> nat. End := (F X) + 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 -«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) - + Spilled_1 = «elpi.tests.test_API2.T» COQDEP VFILES 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) - + GR = const const EXN PRINTING: Not_found +Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End 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 +Query assignments: + Spilled_1 = «elpi.tests.test_API2.FT» + Spilled_2 = «elpi.tests.test_API2.X» COQC tests/test_NES_lib.v COQC examples/usage_NES.v -Query assignments: - Spilled_1 = «elpi.tests.test_API2.T» Foo.x = 3 : nat Foo.x = 3 @@ -13337,19 +13379,11 @@ : nat eq_refl : Foo.x = 5 : Foo.x = 5 -This.Is.A.Long.Namespace.stuff = 1 - : nat - = 1 - : 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 -This.Is.A.Long.Namespace.stuff = 2 - : nat - = 1 - : nat A1.B1.d : nat A1.B1.d is not universe polymorphic @@ -13360,9 +13394,6 @@ 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_aux_1.This.Is.A.Long.Namespace.stuff -This.Is.A.Long.Namespace.more_stuff -This.Is.A.Long.Namespace.stuff x = 5 : nat x2 = 4 @@ -13371,29 +13402,32 @@ : nat B1.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 d = 1 : nat -stuff = 2 - : nat -default nat_def : nat - : nat -A2.B2.f = 2 +This.Is.A.Long.Namespace.stuff = 1 : nat -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» -Cats.And.Dogs.x = 42 + = 1 : nat «elpi.tests.test_API2.GT» Query assignments: G = «elpi.tests.test_API2.GT» Module Type GT = Sig Parameter idT : X.T -> X.T. End +A2.B2.f = 2 + : nat +This.Is.A.Long.Namespace.stuff = 2 + : nat + = 1 + : nat +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 Query assignments: Spilled_1 = «elpi.tests.test_API2.FT» Spilled_2 = «elpi.tests.test_API2.X» @@ -13401,6 +13435,8 @@ Query assignments: H = «elpi.tests.test_API2.HT» Module Type HT = Sig Parameter idT : nat -> nat. End +Cats.And.Dogs.x = 42 + : nat Query assignments: L = [«elpi.tests.test_API2.8», «elpi.tests.test_API2.9»] S = {{ elpi.tests.test_API2.8; elpi.tests.test_API2.9; }} @@ -13728,36 +13764,36 @@ COQC tests/indt_to_inst.v COQC tests/bigTest.v COQC examples/tutorial.v -COQC tests/register/f2.v The predicate of indt «C» is tc-C and search mode is deterministic +COQC tests/register/f2.v (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)) Instances list for indt «Eqb» is: const «eqBool» const «eqProd» Instances list for indt «DecidableClass.Decidable» is: const «Decidable_eq_bool» const «DecidableClass.Decidable_not» +(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)) The predicate of indt «Eqb» is tc-tutorial.tc-Eqb and search mode is classic -COQC tests/register/f3.v -COQC tests/importOrder/f1.v Instances list for indt «Eqb» is: const «eqProd'» const «HB» const «HA» const «eqBool» const «eqProd» +COQC tests/register/f3.v +COQC tests/importOrder/f1.v Query assignments: Len = 2 Rules = [instance [] (const «Bool.Decidable_eq_bool») @@ -13770,16 +13806,10 @@ COQC tests/importOrder/f3c.v COQC tests/importOrder/f3f.v COQC tests/importOrder/f3g.v +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 -Instances list for indt «Eqb» is: - const «eqBool» - const «eqProd'» - const «eqProd» -The predicate of indt «Eqb» is tc-tutorial.tc-Eqb and search mode is -classic 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 @@ -13788,6 +13818,12 @@ #[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] +Instances list for indt «Eqb» is: + const «eqBool» + const «eqProd'» + const «eqProd» +The predicate of indt «Eqb» is tc-tutorial.tc-Eqb and search mode is +classic File "./tests/bigTest.v", line 517, characters 0-133: Warning: A coercion will be introduced instead of an instance in future versions when using ':>' in 'Class' declarations. Replace ':>' with '::' (or @@ -13824,7 +13860,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.014 secs (0.014u,0.s) (successful) +Finished transaction in 0.064 secs (0.032u,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 @@ -13875,7 +13911,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 ############################ @@ -14212,12 +14248,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/2477925/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2477925/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/3147156 and its subdirectories -I: Current time: Thu Jun 19 10:05:25 -12 2025 -I: pbuilder-time-stamp: 1750370725 +I: removing directory /srv/workspace/pbuilder/2477925 and its subdirectories +I: Current time: Sat May 18 05:57:33 +14 2024 +I: pbuilder-time-stamp: 1715961453