Diff of the two buildlogs: -- --- b1/build.log 2025-07-17 13:34:11.550289995 +0000 +++ b2/build.log 2025-07-17 13:38:01.030614803 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Aug 19 07:54:24 -12 2026 -I: pbuilder-time-stamp: 1787169264 +I: Current time: Fri Jul 18 03:34:15 +14 2025 +I: pbuilder-time-stamp: 1752759255 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -24,52 +24,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/2652653/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3258090/tmp/hooks/D01_modify_environment starting +debug: Running on ionos11-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jul 17 13:34 /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/3258090/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3258090/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]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.37(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=40 ' + 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='f66dccd125fb44e981707bb7c4cb3a29' - 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='2652653' - PS1='# ' - PS2='> ' + INVOCATION_ID=491dbb2f8bdf408f85521ee33cc4a64c + 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=3258090 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.ChweXx8z/pbuilderrc_OGGF --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.ChweXx8z/b1 --logfile b1/build.log coq-elpi_2.5.0-1.1.dsc' - SUDO_GID='110' - SUDO_UID='105' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.ChweXx8z/pbuilderrc_WXaJ --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.ChweXx8z/b2 --logfile b2/build.log coq-elpi_2.5.0-1.1.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos5-amd64 6.12.32+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.32-1~bpo12+1 (2025-06-21) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 12 2025 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2652653/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 May 12 19:25 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3258090/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -283,7 +315,7 @@ Get: 86 http://deb.debian.org/debian unstable/main amd64 libstdio-ocaml-dev amd64 0.17.0-1+b2 [114 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libppx-optcomp-ocaml-dev amd64 1:0.17.0-1+b7 [326 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 ocaml-dune amd64 3.17.2-1+b1 [4835 kB] -Fetched 362 MB in 18s (19.8 MB/s) +Fetched 362 MB in 14s (26.1 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-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 ... 19849 files and directories currently installed.) @@ -578,8 +610,8 @@ Setting up tzdata (2025b-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Wed Aug 19 19:56:07 UTC 2026. -Universal Time is now: Wed Aug 19 19:56:07 UTC 2026. +Local time is now: Thu Jul 17 13:36:21 UTC 2025. +Universal Time is now: Thu Jul 17 13:36:21 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20240727.1) ... @@ -662,7 +694,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/coq-elpi-2.5.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.5.0-1.1_source.changes +I: user script /srv/workspace/pbuilder/3258090/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/3258090/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/coq-elpi-2.5.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.5.0-1.1_source.changes dpkg-buildpackage: info: source package coq-elpi dpkg-buildpackage: info: source version 2.5.0-1.1 dpkg-buildpackage: info: source distribution unstable @@ -676,7 +712,7 @@ dune clean Warning: Cache directories could not be created: Permission denied; disabling cache -Hint: Make sure the directory /nonexistent/first-build/.cache/dune/db/temp +Hint: Make sure the directory /nonexistent/second-build/.cache/dune/db/temp can be created make[1]: Leaving directory '/build/reproducible-path/coq-elpi-2.5.0' dh_ocamlclean @@ -694,23 +730,8 @@ dune build Warning: Cache directories could not be created: Permission denied; disabling cache -Hint: Make sure the directory /nonexistent/first-build/.cache/dune/db/temp +Hint: Make sure the directory /nonexistent/second-build/.cache/dune/db/temp can be created -File "./apps/locker/elpi/dummy.v", line 1, characters 0-99: -Warning: To avoid stack overflow, large numbers in nat are interpreted as -applications of Nat.of_num_uint. [abstract-large-number,numbers,default] -File "./apps/locker/elpi/dummy.v", line 2, characters 0-61: -Warning: To avoid stack overflow, large numbers in nat are interpreted as -applications of Nat.of_num_uint. [abstract-large-number,numbers,default] -File "./apps/NES/elpi/dummy.v", line 1, characters 0-99: -Warning: To avoid stack overflow, large numbers in nat are interpreted as -applications of Nat.of_num_uint. [abstract-large-number,numbers,default] -File "./apps/NES/elpi/dummy.v", line 2, characters 0-65: -Warning: To avoid stack overflow, large numbers in nat are interpreted as -applications of Nat.of_num_uint. [abstract-large-number,numbers,default] -File "./apps/NES/elpi/dummy.v", line 3, characters 0-66: -Warning: To avoid stack overflow, large numbers in nat are interpreted as -applications of Nat.of_num_uint. [abstract-large-number,numbers,default] File "./elpi/dummy.v", line 1, characters 0-93: Warning: To avoid stack overflow, large numbers in nat are interpreted as applications of Nat.of_num_uint. [abstract-large-number,numbers,default] @@ -852,6 +873,12 @@ File "./apps/derive/elpi/dummy.v", line 34, characters 0-58: Warning: To avoid stack overflow, large numbers in nat are interpreted as applications of Nat.of_num_uint. [abstract-large-number,numbers,default] +File "./apps/locker/elpi/dummy.v", line 1, characters 0-99: +Warning: To avoid stack overflow, large numbers in nat are interpreted as +applications of Nat.of_num_uint. [abstract-large-number,numbers,default] +File "./apps/locker/elpi/dummy.v", line 2, characters 0-61: +Warning: To avoid stack overflow, large numbers in nat are interpreted as +applications of Nat.of_num_uint. [abstract-large-number,numbers,default] File "./apps/tc/elpi/dummy.v", line 1, characters 0-99: Warning: To avoid stack overflow, large numbers in nat are interpreted as applications of Nat.of_num_uint. [abstract-large-number,numbers,default] @@ -897,6 +924,15 @@ File "./apps/tc/elpi/dummy.v", line 15, characters 0-59: Warning: To avoid stack overflow, large numbers in nat are interpreted as applications of Nat.of_num_uint. [abstract-large-number,numbers,default] +File "./apps/NES/elpi/dummy.v", line 1, characters 0-99: +Warning: To avoid stack overflow, large numbers in nat are interpreted as +applications of Nat.of_num_uint. [abstract-large-number,numbers,default] +File "./apps/NES/elpi/dummy.v", line 2, characters 0-65: +Warning: To avoid stack overflow, large numbers in nat are interpreted as +applications of Nat.of_num_uint. [abstract-large-number,numbers,default] +File "./apps/NES/elpi/dummy.v", line 3, characters 0-66: +Warning: To avoid stack overflow, large numbers in nat are interpreted as +applications of Nat.of_num_uint. [abstract-large-number,numbers,default] File "./theories-stdlib/Vector.v", line 1, characters 0-31: Warning: Using Vector.t is known to be technically difficult, see . @@ -921,84 +957,6 @@ 2410 | type 'arg tactic_main = Solve of 'arg list | Custom of string ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Warning 34 [unused-type-declaration]: unused type tactic_main. -goal X0 c0 c1 c2 c3 is - -[decl c3 `H` (app [global (const «lt»), c0, c1]), - decl c2 `z` (global (indt «nat»)), decl c1 `y` (global (indt «nat»)), - decl c0 `x` (global (indt «nat»))] -------- - -prod `_` (app [global (const «lt»), c1, c2]) c4 \ - app [global (const «lt»), c0, c2] -3 -3 + 7 becomes fun (x : ?e) (x0 : ?e0) => S (S x0) + S (S (S (S (S (S x))))) -DEBUG: attempt at fuzzing binary op: global (indc «PLUS») -DEBUG: attempt at fuzzing binary op: global (const «Nat.add») -DEBUG: attempt at fuzzing binary op: global (indc «AND») -DEBUG: fuzzed! -DEBUG: attempt at fuzzing binary op: global (const «andb») -DEBUG: attempt at fuzzing binary op: global (indc «OR») -DEBUG: fuzzed! -DEBUG: attempt at fuzzing binary op: global (const «orb») -DEBUG: attempt at fuzzing binary op: global (indc «EQ») -DEBUG: attempt at fuzzing binary op: global (const «Nat.eqb») -Inductive eval1 : forall T : ty, Exp T -> Val T -> Prop := - E_Num1 : forall n : nat, eval1 N (NUM n) (iNv n) - | E_Bool1 : forall b : bool, eval1 B (BOOL b) (iBv b) - | E_Plus1 : forall (e1 e2 : Exp N) (n1 n2 : nat), - eval1 N e1 (iNv n1) -> - eval1 N e2 (iNv n2) -> eval1 N (PLUS e1 e2) (iNv (n1 + n2)) - | E_AND1 : forall (e1 e2 : Exp B) (b1 b2 : bool), - eval1 B e1 (iBv b1) -> - eval1 B e2 (iBv b2) -> eval1 B (AND e1 e2) (iBv (b1 && b2)) - | E_OR1 : forall (e1 e2 : Exp B) (b1 b2 : bool), - eval1 B e1 (iBv b1) -> - eval1 B e2 (iBv b2) -> eval1 B (AND e1 e2) (iBv (b1 || b2)) - | E_EQ1 : forall (e1 e2 : Exp N) (n1 n2 : nat), - eval1 N e1 (iNv n1) -> - eval1 N e2 (iNv n2) -> eval1 B (EQ e1 e2) (iBv (Nat.eqb n1 n2)). - -Arguments eval1 T _ _ -Arguments E_Num1 n%nat_scope -Arguments E_Bool1 b%bool_scope -Arguments E_Plus1 e1 e2 (n1 n2)%nat_scope _ _ -Arguments E_AND1 e1 e2 (b1 b2)%bool_scope _ _ -Arguments E_OR1 e1 e2 (b1 b2)%bool_scope _ _ -Arguments E_EQ1 e1 e2 (n1 n2)%nat_scope _ _ -Notation p2 := (p2 nat 3 x) -example_import_projections.p1 nat 3 x : nat - : nat -p1 : forall (T : Type) (t : T), r T t -> nat - : forall (T : Type) (t : T), r T t -> nat -eq_refl -: -example_import_projections.p1 bool false (Build bool false 3 eq_refl eq_refl) = -3 - : example_import_projections.p1 bool false - (Build bool false 3 eq_refl eq_refl) = 3 -example_import_projections.f1 _ x - : bool -foo = -{f1 : Type & {f2 : f1 -> Type & forall t : f1, f2 t -> bool}} - : Type -mk_foo = -fun (f1 : Type) (f2 : f1 -> Type) (f3 : forall t : f1, f2 t -> bool) => -existT (fun f4 : Type => {f5 : f4 -> Type & forall t : f4, f5 t -> bool}) f1 - (existT (fun f4 : f1 -> Type => forall t : f1, f4 t -> bool) f2 f3) - : forall (f1 : Type) (f2 : f1 -> Type), - (forall t : f1, f2 t -> bool) -> foo - -Arguments mk_foo f1%type_scope (f2 f3)%function_scope -eq_refl : d = 3 - : d = 3 -eq_refl : e = 4 - : e = 4 -foo = fun a b c : nat => a + b + c + d + e - : nat -> nat -> nat -> nat - -Arguments foo a%nat_scope [b]%nat_scope {c}%nat_scope -Query assignments: - %arg1 = const «foo» File "./tests/perf_calls.v", line 11, characters 2-3: Warning: File "./tests/perf_calls.v", line 11, characters 2-3 @@ -1014,58 +972,36 @@ File "./tests/perf_calls.v", line 13, characters 7-8 N is linear: name it _N (discard) or N_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -The Db contains [phone_prefix USA 1] -Phone prefix for USA is 1 -The Db contains -[phone_prefix USA 1, phone_prefix France 33, phone_prefix Italy 39] -Phone prefix for France is 33 -sweet! -brr -yummy! -(eq_refl : 2 = (let z := 1 in S z)) -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: - %arg1 = const «foo» -foo 3 +d1 : nat -Query assignments: - %arg1 = const «f» - %arg2 = const «f» - %arg3 = const «f» - %arg4 = const «f» - %arg5 = const «f» -f : forall [S : Type], S -> Prop +d2 + : nat +i1 + : Prop +i2 + : Prop +k1 + : i1 +k2 + : i2 +r1 + : Set +r2 + : Type +f1 + : r1 -> nat +f2 + : r2 -> nat +eq_refl : d = 3 + : d = 3 +eq_refl : e = 4 + : e = 4 +foo = fun a b c : nat => a + b + c + d + e + : nat -> nat -> nat -> nat -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 +Arguments foo a%nat_scope [b]%nat_scope {c}%nat_scope Query assignments: - %arg1 = 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 q X0 -Query r X0 -Result r 1 + %arg1 = const «foo» «elpi.tests.test_API_notations.abbr» Query assignments: A = «elpi.tests.test_API_notations.abbr» @@ -1143,449 +1079,6 @@ X7_ = X2 Query assignments: %arg1 = «elpi.tests.test_API_notations.abbr2» -File "./apps/NES/theories/NES.v", line 39, characters 0-42: -Warning: -Undeclared globals: -- File "/build/reproducible-path/coq-elpi-2.5.0/apps/NES/elpi/nes_interp.elpi", line 6, column 24, characters 152-161: ns. -Please add the following text to your program: -type ns list string -> modpath -> prop. -[elpi.missing-types,elpi.typecheck,elpi,default] -File "./tests/test_File3.v", line 18, characters 2-16: -Warning: This command does not support this attribute: phase. -[unsupported-attributes,parsing,default] -Query assignments: - GRnat = indt «nat» - GRplus = const «Nat.add» - GRs = indc «S» -Query assignments: - Bo = app [global (indc «S»), app [global (indc «S»), global (indc «O»)]] - C = «x» - GR = const «x» - Ty = global (indt «nat») - TyC = global (indt «nat») -Query assignments: - Bo = fun `x` (global (indt «nat»)) c0 \ c0 - C = «f» -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]]] - C = «Nat.add» -The return type of m is: c0 \ c1 \ -fun `x` (global (indt «nat»)) c2 \ - fun `e` - (app [global (indt «eq»), global (indt «nat»), global (indc «O»), c2]) - c3 \ prod `_` (app [c1, global (indc «O»)]) c4 \ app [c1, c2] -Query assignments: - C = «m» - RT = c0 \ c1 \ -fun `x` (global (indt «nat»)) c2 \ - fun `e` - (app [global (indt «eq»), global (indt «nat»), global (indc «O»), c2]) - c3 \ prod `_` (app [c1, global (indc «O»)]) c4 \ app [c1, c2] -typ «elpi_examples.tutorial_coq_elpi_HOAS.6» < -typ «elpi_examples.tutorial_coq_elpi_HOAS.7» -Debug: Cannot enforce elpi_examples.tutorial_coq_elpi_HOAS.7 <= -elpi_examples.tutorial_coq_elpi_HOAS.6 because -elpi_examples.tutorial_coq_elpi_HOAS.6 -< elpi_examples.tutorial_coq_elpi_HOAS.7 -Query assignments: - U = typ «elpi_examples.tutorial_coq_elpi_HOAS.6» - U1 = typ «elpi_examples.tutorial_coq_elpi_HOAS.7» -Universe constraints: -UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.7 - elpi_examples.tutorial_coq_elpi_HOAS.6} |= - elpi_examples.tutorial_coq_elpi_HOAS.6 < elpi_examples.tutorial_coq_elpi_HOAS.7 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -(id b) is: app [fun `x` (sort (typ X0)) c0 \ c0, sort (typ X1)] -(id a) is illtyped: -Illegal application: -The term "fun x : Type => x" of type "Type -> Type" -cannot be applied to the term - "Type" : "Type" -This term has type "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8+1}" -which should be a subtype of "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8}". -(universe inconsistency: Cannot enforce elpi_examples.tutorial_coq_elpi_HOAS.8 -< elpi_examples.tutorial_coq_elpi_HOAS.8 because -elpi_examples.tutorial_coq_elpi_HOAS.8 -= elpi_examples.tutorial_coq_elpi_HOAS.8) -after typing (id b) is: -app - [fun `x` (sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8»)) c0 \ c0, - sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.9»)] : -sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8») -Universe constraints: UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.9 - elpi_examples.tutorial_coq_elpi_HOAS.8} |= - elpi_examples.tutorial_coq_elpi_HOAS.9 < elpi_examples.tutorial_coq_elpi_HOAS.8 - ALGEBRAIC UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.9 - elpi_examples.tutorial_coq_elpi_HOAS.8} - FLEXIBLE UNIVERSES: - elpi_examples.tutorial_coq_elpi_HOAS.9 - elpi_examples.tutorial_coq_elpi_HOAS.8 - SORTS: - - WEAK CONSTRAINTS: - - -Query assignments: - A = sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8») - B = sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.9») - ErrMsg = Illegal application: -The term "fun x : Type => x" of type "Type -> Type" -cannot be applied to the term - "Type" : "Type" -This term has type "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8+1}" -which should be a subtype of "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8}". -(universe inconsistency: Cannot enforce elpi_examples.tutorial_coq_elpi_HOAS.8 -< elpi_examples.tutorial_coq_elpi_HOAS.8 because -elpi_examples.tutorial_coq_elpi_HOAS.8 -= elpi_examples.tutorial_coq_elpi_HOAS.8) - ID = fun `x` (sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8»)) c0 \ c0 - T = sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8») - U = «elpi_examples.tutorial_coq_elpi_HOAS.8» - V = «elpi_examples.tutorial_coq_elpi_HOAS.9» -Universe constraints: -UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.9 - elpi_examples.tutorial_coq_elpi_HOAS.8} |= - elpi_examples.tutorial_coq_elpi_HOAS.9 < elpi_examples.tutorial_coq_elpi_HOAS.8 -ALGEBRAIC UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.9 - elpi_examples.tutorial_coq_elpi_HOAS.8} -FLEXIBLE UNIVERSES: - elpi_examples.tutorial_coq_elpi_HOAS.9 - elpi_examples.tutorial_coq_elpi_HOAS.8 -SORTS: - -WEAK CONSTRAINTS: - - -app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] -= -app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] -app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - app [global (indc «S»), global (indc «O»)]] -Query assignments: - S = indc «S» -fun `x` (global (indt «nat»)) c0 \ - fun `x` (global (indt «nat»)) c1 \ - app [global (const «Nat.add»), c1, c0] -fun `x` (global (indt «nat»)) c0 \ - fun `x` (global (indt «nat»)) c1 \ - app [global (const «Nat.add»), c1, c0] -fun `a` (global (indt «nat»)) c0 \ - fun `b` (global (indt «nat»)) c1 \ - app [global (const «Nat.add»), c1, c0] -Query assignments: - X = c0 \ c1 \ -app [global (const «Nat.add»), c1, c0] -fun `a` (global (indt «nat»)) c0 \ - fun `b` (global (indt «nat»)) c1 \ - app [global (indt «eq»), global (indt «nat»), c0, c1] -indt «nat» -indt «nat» -before: -fun `ax` (global (indt «nat»)) c0 \ - fun `b` (global (indt «nat»)) c1 \ - app [global (indt «eq»), X0 c1, c0, c1] -after: -fun `ax` (global (indt «nat»)) c0 \ - fun `b` (global (indt «nat»)) c1 \ - app [global (indt «eq»), global (indt «nat»), c0, c1] -Query assignments: - T = fun `ax` (global (indt «nat»)) c0 \ - fun `b` (global (indt «nat»)) c1 \ - app [global (indt «eq»), global (indt «nat»), c0, c1] - X1_ = c0 \ -global (indt «nat») -Universe constraints: -UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.11 - elpi_examples.tutorial_coq_elpi_HOAS.10} |= - elpi_examples.tutorial_coq_elpi_HOAS.11 < elpi_examples.tutorial_coq_elpi_HOAS.10 - Set <= elpi_examples.tutorial_coq_elpi_HOAS.11 - elpi_examples.tutorial_coq_elpi_HOAS.11 <= eq.u0 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α6 := Type -WEAK CONSTRAINTS: - - -Query assignments: - Bo = c0 \ -app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]] - N = `x` - T = fun `x` (global (indt «nat»)) c0 \ - app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]] - Ty = global (indt «nat») -Query assignments: - Bo = c0 \ -app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]] - N = `x` - T = fun `x` (global (indt «nat»)) c0 \ - app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]] - Ty = global (indt «nat») -raw T = X0 - -SHELF: -FUTURE GOALS STACK: - - -Rocq-Elpi mapping: -RAW: -ELAB: - --------------------------------- - evar (X1) (global (indt «nat»)) (X1) /* suspended on X1 */ -EVARS: - ?X11==[ |- nat] (internal placeholder) {?e0} - ?X10==[ |- => nat] (internal placeholder) - -SHELF: -FUTURE GOALS STACK: - ?X11 - -Rocq-Elpi mapping: -RAW: -?X11 <-> X1 -ELAB: -?X11 <-> X1 - -Query assignments: - T = X1 - X2_ = X1 -Syntactic constraints: - evar (X1) (global (indt «nat»)) (X1) /* suspended on X1 */ -Universe constraints: -UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.12} |= - Set <= elpi_examples.tutorial_coq_elpi_HOAS.12 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α7 := Type -WEAK CONSTRAINTS: - - -raw T = -fun `x` (global (indt «nat»)) c0 \ - app [global (const «Nat.add»), c0, X0 c0] - {c0 c1} : decl c1 `x` (global (indt «nat»)) - ?- evar (X1 c1) (global (indt «nat»)) (X1 c1) /* suspended on X1 */ -EVARS: - ?X13==[x |- nat] (internal placeholder) {?e0} - ?X12==[x |- => nat] (internal placeholder) - -SHELF: -FUTURE GOALS STACK: - ?X13 - -Rocq-Elpi mapping: -RAW: -?X13 <-> c0 \ X1 c0 -ELAB: -?X13 <-> X1 - -Query assignments: - Bo = c0 \ -app [global (const «Nat.add»), c0, X1 c0] - N = `x` - T = fun `x` (global (indt «nat»)) c0 \ - app [global (const «Nat.add»), c0, X1 c0] - Ty = global (indt «nat») - X3_ = c0 \ -X1 c0 -Syntactic constraints: - {c0 c1} : decl c1 `x` (global (indt «nat»)) - ?- evar (X1 c1) (global (indt «nat»)) (X1 c1) /* suspended on X1 */ -Universe constraints: -UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.13} |= - Set <= elpi_examples.tutorial_coq_elpi_HOAS.13 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α8 := Type -WEAK CONSTRAINTS: - - -Bo1 (not in pattern fragment) = -app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - X0 (app [global (indc «S»), global (indc «O»)])] -Bo1 before = -app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], - X0 (app [global (indc «S»), global (indc «O»)])] -Bo1 after = -app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], X1] -Query assignments: - Bo = c0 \ -app [global (const «Nat.add»), c0, X1] - Bo1 = app - [global (const «Nat.add»), - app [global (indc «S»), global (indc «O»)], X1] - N = `x` - T = fun `x` (global (indt «nat»)) c0 \ app [global (const «Nat.add»), c0, X1] - Ty = global (indt «nat») - X5_ = c0 \ -X1 -Syntactic constraints: - evar (X1) (global (indt «nat»)) (X1) /* suspended on X1 */ -Universe constraints: -UNIVERSES: - {elpi_examples.tutorial_coq_elpi_HOAS.14} |= - Set <= elpi_examples.tutorial_coq_elpi_HOAS.14 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α9 := Type -WEAK CONSTRAINTS: - - -Query assignments: - Bo = c0 \ -app [global (const «andb»), c0, X0 c0] - Bo1 = app - [global (const «andb»), app [global (indc «S»), global (indc «O»)], - X0 (app [global (indc «S»), global (indc «O»)])] - Bo2 = app - [global (const «andb»), - app - [global (const «nat2bool»), - app [global (indc «S»), global (indc «O»)]], X1] - N = `x` - T = fun `x` (global (indt «nat»)) c0 \ app [global (const «andb»), c0, X0 c0] - Ty = global (indt «nat») - X6_ = X0 -Syntactic constraints: - evar (X2) (global (indt «bool»)) X1 /* suspended on X2, X1 */ -File "./examples/tutorial_coq_elpi_HOAS.v", line 87, characters 19-24: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 87, characters 19-24 -GRnat is linear: name it _GRnat (discard) or GRnat_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 89, characters 20-26: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 89, characters 20-26 -GRplus is linear: name it _GRplus (discard) or GRplus_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 88, characters 17-20: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 88, characters 17-20 -GRs is linear: name it _GRs (discard) or GRs_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 24-26: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 24-26 -Bo is linear: name it _Bo (discard) or Bo_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 107, characters 20-22: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 107, characters 20-22 -Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 28-31: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 28-31 -TyC is linear: name it _TyC (discard) or TyC_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 152, characters 24-26: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 152, characters 24-26 -Bo is linear: name it _Bo (discard) or Bo_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 195, characters 24-26: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 195, characters 24-26 -Bo is linear: name it _Bo (discard) or Bo_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 285, characters 17-18: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 285, characters 17-18 -V is linear: name it _V (discard) or V_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 10-11: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 10-11 -N is linear: name it _N (discard) or N_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 12-14: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 12-14 -Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 10-11: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 10-11 -N is linear: name it _N (discard) or N_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 12-14: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 12-14 -Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 756, characters 40-43: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 756, characters 40-43 -Bo2 is linear: name it _Bo2 (discard) or Bo2_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 10-11: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 10-11 -N is linear: name it _N (discard) or N_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 12-14: -Warning: -File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 12-14 -Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] Query assignments: L = [gref (indt «Empty_set»), gref (const «Empty_set_rect»), gref (const «Empty_set_ind»), gref (const «Empty_set_rec»), @@ -1785,1063 +1278,260 @@ MP_TF is linear: name it _MP_TF (discard) or MP_TF_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] 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 -Query assignments: - X = «x» -fx : nat -> nat - : nat -> nat -opaque_3 : nat - -opaque_3 is not universe polymorphic -opaque_3 is opaque -Expands to: Constant elpi.tests.test_API_section.opaque_3 -foo : nat - : nat -bar : bool -> nat - : bool -> nat -The age of alice is 20 -Query assignments: - A = 20 -mallory is 23 years old -Query assignments: - P = mallory -alice is 20 years old -Query assignments: - P = alice -mallory and bob are 23 years old -Query assignments: - A = 23 - P = mallory - Q = bob -I picked P = mallory -I picked Q = mallory -I picked Q = bob -the last choice worked! -mallory and bob are 23 years old -Query assignments: - A = 23 - P = mallory - Q = bob -bob is older than alice -Query assignments: - X = alice -both bob and mallory are older than alice -Query assignments: - X = alice -F = c0 \ age alice c0 -F 20 = age alice 20 -F 23 = age alice 23 -Query assignments: - F = c0 \ -age alice c0 -λx.x ~> fun c0 \ c0 -(λx.x) (λx.x) ~> fun c0 \ c0 -Query assignments: - I = fun c0 \ c0 - T = fun c0 \ c0 - T1 = fun c0 \ c0 -(Fst foo bar) ~> foo -(foo bar) ~> app foo bar -Query assignments: - Fst = fun c0 \ fun c1 \ c0 - S = app foo bar - S1 = app foo bar - T = app (app (fun c0 \ fun c1 \ c0) foo) bar - T1 = foo -The type of λx.λy.x is: arr X0 (arr X1 X0) -Query assignments: - Ty = arr X0 (arr X1 X0) -Error: fun c0 \ app c0 c0 has no type -Query assignments: - Delta = fun c0 \ app c0 c0 - Ty = X0 -2 + 1 = s (s (s z)) -Query assignments: - R = s (s (s z)) -Query assignments: - X = X0 - Z = X1 -Syntactic constraints: sum X0 (s z) X1 /* suspended on X0 */ -The result is: s z -Query assignments: - X = z - Z = s z -Query assignments: - X = s z -Debug: sum X0 (s z) X1 /* suspended on X0 */ -Currently Y = X1 -Debug: sum X2 (s z) X3 /* suspended on X2 */ -Currently Y = s X3 -Finally Y = s (s z) -Query assignments: - X = s z - Y = s (s z) - Z = z -Query assignments: - X = X0 -Syntactic constraints: - even X0 /* suspended on X0 */ odd X0 /* suspended on X0 */ -X0 can't be even and odd at the same time -Query assignments: - A = [1, 2, 3, 3, 2, 1] -Query assignments: - A = [1, 2, 3, 3, 2, 1] -result = 5 -Query assignments: - X = result = - Y = 5 -result = 5 -Query assignments: - %arg1 = 5 -Query assignments: - R1 = X0 - R2 = [2, 3, 4] - R3 = [2, 3, 4] -Query assignments: - R = [2, 3, 4] -Y = c0 -arr X0 (arr X1 X0) -Query assignments: - Ty = arr X0 (arr X1 X0) -Debug: run 1 {{{ - -Debug: - rid:0 step:1 gid:4 user:curgoal = , - of (fun c0 \ fun c1 \ c0) X0 , coq.say X0 - -Debug: - rid:0 step:1 gid:4 user:rule = and - -Debug: - rid:0 step:1 gid:4 user:subgoal = 5 - -Debug: - rid:0 step:1 gid:5 user:newgoal = of (fun c0 \ fun c1 \ c0) X0 - -Debug: - rid:0 step:1 gid:4 user:subgoal = 6 - -Debug: - rid:0 step:1 gid:6 user:newgoal = coq.say X0 - -Debug: - rid:0 step:1 gid:4 user:rule:and = success - -Debug: }}} -> (0.000s) -Debug: run 2 {{{ - -Debug: - rid:0 step:2 gid:5 user:curgoal = of - of (fun c0 \ fun c1 \ c0) X0 - -Debug: - rid:0 step:2 gid:5 user:rule = backchain - -Debug: - rid:0 step:2 gid:5 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - -Debug: }}} -> (0.000s) -Debug: select 3 {{{ - -Debug: - rid:0 step:2 gid:5 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - (of (fun A0) (arr A2 A1)) :- ( - pi (c0 \ - (of c0 A2 => of (A0 c0) A1))). - -Debug: - rid:0 step:2 gid:0 user:assign = A0 := c0 \ - fun c1 \ c0 - -Debug: - rid:0 step:2 gid:0 user:assign = X0 := arr X1 X2 - -Debug: - rid:0 step:2 gid:5 user:subgoal = 7 - -Debug: - rid:0 step:2 gid:7 user:newgoal = pi c0 \ of c0 X1 => of (fun c1 \ c0) X2 - -Debug: - rid:0 step:2 gid:7 user:rule:backchain = success - -Debug: }}} -> (0.001s) -Debug: run 3 {{{ - -Debug: - rid:0 step:3 gid:7 user:curgoal = pi - pi c0 \ of c0 X1 => of (fun c1 \ c0) X2 - -Debug: rid:0 step:3 gid:7 user:rule = pi - -Debug: - rid:0 step:3 gid:7 user:subgoal = 8 - -Debug: - rid:0 step:3 gid:8 user:newgoal = of c0 X1 => of (fun c1 \ c0) X2 - -Debug: - rid:0 step:3 gid:8 user:rule:pi = success - -Debug: }}} -> (0.000s) -Debug: run 4 {{{ - -Debug: - rid:0 step:4 gid:8 user:curgoal = => - of c0 X1 => of (fun c1 \ c0) X2 - -Debug: - rid:0 step:4 gid:8 user:rule = implication - -Debug: - rid:0 step:4 gid:8 user:subgoal = 9 - -Debug: - rid:0 step:4 gid:9 user:newgoal = of (fun c1 \ c0) X2 - -Debug: - rid:0 step:4 gid:9 user:rule:implication = success - -Debug: }}} -> (0.001s) -Debug: run 5 {{{ - -Debug: - rid:0 step:5 gid:9 user:curgoal = of - of (fun c1 \ c0) X2 - -Debug: - rid:0 step:5 gid:9 user:rule = backchain - -Debug: - rid:0 step:5 gid:9 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - -Debug: }}} -> (0.000s) -Debug: select 4 {{{ - -Debug: - rid:0 step:5 gid:9 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - (of (fun A0) (arr A2 A1)) :- ( - pi (c0 \ - (of c0 A2 => of (A0 c0) A1))). - -Debug: - rid:0 step:5 gid:0 user:assign = A0 := c1 \ - c0 - -Debug: - rid:0 step:5 gid:0 user:assign = X2 := arr X3 X4 - -Debug: - rid:0 step:5 gid:9 user:subgoal = 10 - -Debug: - rid:0 step:5 gid:10 user:newgoal = pi c1 \ of c1 X3 => of c0 X4 - -Debug: - rid:0 step:5 gid:10 user:rule:backchain = success - -Debug: }}} -> (0.000s) -Debug: run 6 {{{ - -Debug: - rid:0 step:6 gid:10 user:curgoal = pi - pi c1 \ of c1 X3 => of c0 X4 - -Debug: - rid:0 step:6 gid:10 user:rule = pi - -Debug: - rid:0 step:6 gid:10 user:subgoal = 11 - -Debug: - rid:0 step:6 gid:11 user:newgoal = of c1 X3 => of c0 X4 - -Debug: - rid:0 step:6 gid:11 user:rule:pi = success - -Debug: }}} -> (0.000s) -Debug: run 7 {{{ - -Debug: - rid:0 step:7 gid:11 user:curgoal = => - of c1 X3 => of c0 X4 - -Debug: - rid:0 step:7 gid:11 user:rule = implication - -Debug: - rid:0 step:7 gid:11 user:subgoal = 12 - -Debug: - rid:0 step:7 gid:12 user:newgoal = of c0 X4 - -Debug: - rid:0 step:7 gid:12 user:rule:implication = success - -Debug: }}} -> (0.000s) -Debug: run 8 {{{ - -Debug: - rid:0 step:8 gid:12 user:curgoal = of - of c0 X4 - -Debug: - rid:0 step:8 gid:12 user:rule = backchain - -Debug: - rid:0 step:8 gid:12 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: - -Debug: }}} -> (0.000s) -Debug: select 5 {{{ - -Debug: - rid:0 step:8 gid:12 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: - (of c0 X1) :- . - -Debug: - rid:0 step:8 gid:0 user:assign = X1 := X4 - -Debug: - rid:0 step:8 gid:12 user:rule:backchain = success - -Debug: }}} -> (0.000s) -Debug: run 9 {{{ - -Debug: - rid:0 step:9 gid:6 user:curgoal = coq.say - coq.say (arr X4 (arr X3 X4)) - -Debug: - rid:0 step:9 gid:6 user:rule = builtin - -Debug: - rid:0 step:9 gid:6 user:rule:builtin:name = coq.say - -arr X4 (arr X3 X4) -Debug: - rid:0 step:9 gid:6 user:rule:builtin = success - -Debug: }}} -> (0.001s) -Query assignments: - Ty = arr X4 (arr X3 X4) -Debug: run 1 {{{ - -Debug: - rid:1 step:1 gid:13 user:curgoal = , - of (fun c0 \ app c0 c0) X0 , coq.say X0 - -Debug: - rid:1 step:1 gid:13 user:rule = and - -Debug: - rid:1 step:1 gid:13 user:subgoal = 14 - -Debug: - rid:1 step:1 gid:14 user:newgoal = of (fun c0 \ app c0 c0) X0 - -Debug: - rid:1 step:1 gid:13 user:subgoal = 15 - -Debug: - rid:1 step:1 gid:15 user:newgoal = coq.say X0 - -Debug: - rid:1 step:1 gid:13 user:rule:and = success - -Debug: }}} -> (0.000s) -Debug: run 2 {{{ - -Debug: - rid:1 step:2 gid:14 user:curgoal = of - of (fun c0 \ app c0 c0) X0 - -Debug: - rid:1 step:2 gid:14 user:rule = backchain - -Debug: - rid:1 step:2 gid:14 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - -Debug: }}} -> (0.000s) -Debug: select 3 {{{ - -Debug: - rid:1 step:2 gid:14 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - (of (fun A0) (arr A2 A1)) :- ( - pi (c0 \ - (of c0 A2 => of (A0 c0) A1))). - -Debug: - rid:1 step:2 gid:0 user:assign = A0 := c0 \ - app c0 c0 - -Debug: - rid:1 step:2 gid:0 user:assign = X0 := arr X1 X2 - -Debug: - rid:1 step:2 gid:14 user:subgoal = 16 - -Debug: - rid:1 step:2 gid:16 user:newgoal = pi c0 \ of c0 X1 => of (app c0 c0) X2 - -Debug: - rid:1 step:2 gid:16 user:rule:backchain = success - -Debug: }}} -> (0.001s) -Debug: run 3 {{{ - -Debug: - rid:1 step:3 gid:16 user:curgoal = pi - pi c0 \ of c0 X1 => of (app c0 c0) X2 - -Debug: - rid:1 step:3 gid:16 user:rule = pi - -Debug: - rid:1 step:3 gid:16 user:subgoal = 17 - -Debug: - rid:1 step:3 gid:17 user:newgoal = of c0 X1 => of (app c0 c0) X2 - -Debug: - rid:1 step:3 gid:17 user:rule:pi = success - -Debug: }}} -> (0.000s) -Debug: run 4 {{{ - -Debug: - rid:1 step:4 gid:17 user:curgoal = => - of c0 X1 => of (app c0 c0) X2 - -Debug: - rid:1 step:4 gid:17 user:rule = implication - -Debug: - rid:1 step:4 gid:17 user:subgoal = 18 - -Debug: - rid:1 step:4 gid:18 user:newgoal = of (app c0 c0) X2 - -Debug: - rid:1 step:4 gid:18 user:rule:implication = success - -Debug: }}} -> (0.000s) -Debug: run 5 {{{ - -Debug: - rid:1 step:5 gid:18 user:curgoal = of - of (app c0 c0) X2 - -Debug: - rid:1 step:5 gid:18 user:rule = backchain - -Debug: - rid:1 step:5 gid:18 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 591, column 2, characters 15200-15250: - -Debug: }}} -> (0.000s) -Debug: select 4 {{{ - -Debug: - rid:1 step:5 gid:18 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 591, column 2, characters 15200-15250: - (of (app A0 A3) A2) :- ( - of A0 (arr A1 A2)), - (of A3 A1). - -Debug: - rid:1 step:5 gid:0 user:assign = A0 := c0 - -Debug: - rid:1 step:5 gid:0 user:assign = A3 := c0 - -Debug: - rid:1 step:5 gid:0 user:assign = A2 := X2 - -Debug: - rid:1 step:5 gid:18 user:subgoal = 19 - -Debug: - rid:1 step:5 gid:19 user:newgoal = of c0 (arr X3^1 X2) - -Debug: - rid:1 step:5 gid:19 user:subgoal = 20 - -Debug: - rid:1 step:5 gid:20 user:newgoal = of c0 X3^1 - -Debug: - rid:1 step:5 gid:19 user:rule:backchain = success - -Debug: }}} -> (0.001s) -Debug: run 6 {{{ - -Debug: - rid:1 step:6 gid:19 user:curgoal = of - of c0 (arr X3^1 X2) - -Debug: - rid:1 step:6 gid:19 user:rule = backchain - -Debug: - rid:1 step:6 gid:19 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: - -Debug: }}} -> (0.000s) -Debug: select 5 {{{ - -Debug: - rid:1 step:6 gid:19 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: - (of c0 X1) :- . - -Debug: - rid:1 step:6 gid:0 user:assign:expand = X3^1 := X4 c0 - -Debug: - rid:1 step:6 gid:0 user:assign:restrict = 0 X4 c0 := c0 \ - .X5 - -Debug: - rid:1 step:6 gid:0 user:assign = X1 := arr X5 X2 - -Debug: - rid:1 step:6 gid:19 user:rule:backchain = success - -Debug: }}} -> (0.000s) -Debug: run 7 {{{ - -Debug: - rid:1 step:7 gid:20 user:curgoal = of - of c0 X5 - -Debug: - rid:1 step:7 gid:20 user:rule = backchain - -Debug: - rid:1 step:7 gid:20 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: - -Debug: }}} -> (0.000s) -Debug: select 6 {{{ - -Debug: - rid:1 step:7 gid:20 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: - (of c0 (arr X5 X2)) :- . - -Debug: - rid:1 step:7 gid:20 user:backchain:fail-to = unify X5 with arr X5 X2 - -Debug: }}} -> (0.001s) -Debug: select 7 {{{ - -Debug: - rid:1 step:7 gid:20 user:rule:backchain = fail - -Debug: }}} -> (0.000s) -Debug: run 6 {{{ - -Debug: - rid:2 step:6 gid:27 user:curgoal = pi - pi c1 \ of c1 X0 => of c0 X1 - -Debug: - rid:2 step:6 gid:27 user:rule = pi - -Debug: - rid:2 step:6 gid:27 user:subgoal = 28 - -Debug: - rid:2 step:6 gid:28 user:newgoal = of c1 X0 => of c0 X1 - -Debug: - rid:2 step:6 gid:28 user:rule:pi = success - -Debug: }}} -> (0.000s) -Debug: run 7 {{{ - -Debug: - rid:2 step:7 gid:28 user:curgoal = => - of c1 X0 => of c0 X1 - -Debug: - rid:2 step:7 gid:28 user:rule = implication - -Debug: - rid:2 step:7 gid:28 user:subgoal = 29 - -Debug: - rid:2 step:7 gid:29 user:newgoal = of c0 X1 - -Debug: - rid:2 step:7 gid:29 user:rule:implication = success - -Debug: }}} -> (0.000s) -Debug: run 8 {{{ - -Debug: - rid:2 step:8 gid:29 user:curgoal = of - of c0 X1 - -Debug: - rid:2 step:8 gid:29 user:rule = backchain - -Debug: - rid:2 step:8 gid:29 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: - -Debug: }}} -> (0.000s) -Debug: select 5 {{{ - -Debug: - rid:2 step:8 gid:29 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: - (of c0 X2) :- . - -Debug: - rid:2 step:8 gid:0 user:assign = X2 := X1 - -Debug: - rid:2 step:8 gid:29 user:rule:backchain = success - -Debug: }}} -> (0.000s) -arr X1 (arr X0 X1) -Query assignments: - Ty = arr X1 (arr X0 X1) -Debug: run 2 {{{ - -Debug: - rid:3 step:2 gid:31 user:curgoal = of - of (fun c0 \ fun c1 \ c0) X0 - -Debug: - rid:3 step:2 gid:31 user:rule = backchain - -Debug: - rid:3 step:2 gid:31 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - -Debug: }}} -> (0.000s) -Debug: select 3 {{{ - -Debug: - rid:3 step:2 gid:31 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - (of (fun A0) (arr A2 A1)) :- ( - pi (c0 \ - (of c0 A2 => of (A0 c0) A1))). - -Debug: - rid:3 step:2 gid:0 user:assign = A0 := c0 \ - fun c1 \ c0 - -Debug: - rid:3 step:2 gid:0 user:assign = X0 := arr X1 X2 - -Debug: - rid:3 step:2 gid:31 user:subgoal = 33 - -Debug: - rid:3 step:2 gid:33 user:newgoal = pi c0 \ of c0 X1 => of (fun c1 \ c0) X2 - -Debug: - rid:3 step:2 gid:33 user:rule:backchain = success - -Debug: }}} -> (0.001s) -Debug: run 5 {{{ - -Debug: - rid:3 step:5 gid:35 user:curgoal = of - of (fun c1 \ c0) X2 - -Debug: - rid:3 step:5 gid:35 user:rule = backchain - -Debug: - rid:3 step:5 gid:35 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - -Debug: }}} -> (0.000s) -Debug: select 4 {{{ - -Debug: - rid:3 step:5 gid:35 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: - (of (fun A0) (arr A2 A1)) :- ( - pi (c0 \ - (of c0 A2 => of (A0 c0) A1))). - -Debug: - rid:3 step:5 gid:0 user:assign = A0 := c1 \ - c0 - -Debug: - rid:3 step:5 gid:0 user:assign = X2 := arr X3 X4 - -Debug: - rid:3 step:5 gid:35 user:subgoal = 36 - -Debug: - rid:3 step:5 gid:36 user:newgoal = pi c1 \ of c1 X3 => of c0 X4 - -Debug: - rid:3 step:5 gid:36 user:rule:backchain = success - -Debug: }}} -> (0.000s) -Debug: run 8 {{{ - -Debug: - rid:3 step:8 gid:38 user:curgoal = of - of c0 X4 - -Debug: - rid:3 step:8 gid:38 user:rule = backchain - -Debug: - rid:3 step:8 gid:38 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: - -Debug: }}} -> (0.000s) -Debug: select 5 {{{ - -Debug: - rid:3 step:8 gid:38 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: - (of c0 X1) :- . - -Debug: - rid:3 step:8 gid:0 user:assign = X1 := X4 - -Debug: - rid:3 step:8 gid:38 user:rule:backchain = success - -Debug: }}} -> (0.000s) -arr X4 (arr X3 X4) -Query assignments: - Ty = arr X4 (arr X3 X4) -Debug: run 8 {{{ - -Debug: - rid:4 step:8 gid:47 user:curgoal = of - of c0 X0 - -Debug: - rid:4 step:8 gid:47 user:rule = backchain - -Debug: - rid:4 step:8 gid:47 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: - -Debug: }}} -> (0.000s) -Debug: select 5 {{{ - -Debug: - rid:4 step:8 gid:47 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: - (of c0 X1) :- . - -Debug: - rid:4 step:8 gid:0 user:assign = X1 := X0 - -Debug: - rid:4 step:8 gid:47 user:rule:backchain = success - -Debug: }}} -> (0.000s) -arr X0 (arr X2 X0) -Query assignments: - Ty = arr X0 (arr X2 X0) -calling mypred on 3 -calling mypred on 2 -calling mypred on 1 -calling mypred on 0 -ok -Query assignments: - A = X0 - B = X0 - C = X0 -Query assignments: - A = X0 - B = X0 - C = X0 -File "./examples/tutorial_elpi_lang.v", line 554, characters 12-17: -Warning: -File "./examples/tutorial_elpi_lang.v", line 554, characters 12-17 -Hummm is linear: name it _Hummm (discard) or Hummm_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 670, characters 12-14: -Warning: -File "./examples/tutorial_elpi_lang.v", line 670, characters 12-14 -Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 826, characters 26-27: -Warning: -File "./examples/tutorial_elpi_lang.v", line 826, characters 26-27 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 826, characters 34-35: -Warning: -File "./examples/tutorial_elpi_lang.v", line 826, characters 34-35 -Y is linear: name it _Y (discard) or Y_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 856, characters 26-27: -Warning: -File "./examples/tutorial_elpi_lang.v", line 856, characters 26-27 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 856, characters 34-35: -Warning: -File "./examples/tutorial_elpi_lang.v", line 856, characters 34-35 -Y is linear: name it _Y (discard) or Y_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 888, characters 21-22: -Warning: -File "./examples/tutorial_elpi_lang.v", line 888, characters 21-22 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 888, characters 29-30: -Warning: -File "./examples/tutorial_elpi_lang.v", line 888, characters 29-30 -Z is linear: name it _Z (discard) or Z_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1020, characters 26-27: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1020, characters 26-27 -A is linear: name it _A (discard) or A_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1057, characters 27-28: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1057, characters 27-28 -A is linear: name it _A (discard) or A_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1146, characters 18-20: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1146, characters 18-20 -R1 is linear: name it _R1 (discard) or R1_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1147, characters 15-17: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1147, characters 15-17 -R2 is linear: name it _R2 (discard) or R2_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1148, characters 16-18: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1148, characters 16-18 -R3 is linear: name it _R3 (discard) or R3_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1184, characters 16-17: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1184, characters 16-17 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1511, characters 9-10: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1511, characters 9-10 -A is linear: name it _A (discard) or A_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1511, characters 20-21: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1511, characters 20-21 -B is linear: name it _B (discard) or B_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1511, characters 28-29: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1511, characters 28-29 -C is linear: name it _C (discard) or C_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1518, characters 9-10: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1518, characters 9-10 -A is linear: name it _A (discard) or A_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1518, characters 20-21: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1518, characters 20-21 -B is linear: name it _B (discard) or B_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_elpi_lang.v", line 1518, characters 28-29: -Warning: -File "./examples/tutorial_elpi_lang.v", line 1518, characters 28-29 -C is linear: name it _C (discard) or C_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -Coq version: 8.20.1 = 8 . 20 . 1 -Query assignments: - MA = 8 - MI = 20 - P = 1 - V = 8.20.1 -hello world -A -B -Query assignments: - GR = «nat» -Query assignments: - GR = «Nat.add» - MP = «Coq.Init.Datatypes» -Query assignments: - A = «elpi.tests.test_API.succ» - GR = «Nat.add» - MP = «Coq.Init.Datatypes» - X1 = [loc-gref (const «Nat.add»)] - X2 = [loc-gref (const «Nat.add»)] - X3 = [loc-abbreviation «elpi.tests.test_API.succ»] - X4 = [loc-modpath «Coq.Init.Datatypes»] -Universe constraints: -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 = typ «elpi.tests.test_API.2» - Y = typ «elpi.tests.test_API.3» + E = fun `n` (global (indt «nat»)) c0 \ + fun `t` (app [global (const «T2»), c0]) c1 \ + fun `x` + (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ + app + [global (const «g3»), c0, app [global (const «h»), c0, c1], + app + [global (indc «S»), + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] + TY = prod `n` (global (indt «nat»)) c0 \ + prod `t` (app [global (const «T2»), c0]) c1 \ + prod `x` + (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ + global (indt «nat») + X1_ = X0 Universe constraints: UNIVERSES: - {elpi.tests.test_API.3 elpi.tests.test_API.2} |= - elpi.tests.test_API.2 <= elpi.tests.test_API.3 + {elpi.tests.test_API_elaborate.13 elpi.tests.test_API_elaborate.10 + elpi.tests.test_API_elaborate.9} |= + elpi.tests.test_API_elaborate.13 < elpi.tests.test_API_elaborate.9 + Set <= elpi.tests.test_API_elaborate.10 + Set <= elpi.tests.test_API_elaborate.13 + T2.u0 <= elpi.tests.test_API_elaborate.13 + f3.u0 <= elpi.tests.test_API_elaborate.13 ALGEBRAIC UNIVERSES: - {} + {elpi.tests.test_API_elaborate.10} FLEXIBLE UNIVERSES: - + elpi.tests.test_API_elaborate.10 SORTS: - + α4 := Type + α5 := Type WEAK CONSTRAINTS: Query assignments: - 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: - - + 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 + X2_ = X0 + X3_ = X1 Query assignments: - X = typ «elpi.tests.test_API.6» - Y = typ «elpi.tests.test_API.7» - Z = typ «elpi.tests.test_API.8» + 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»)] + X4_ = X0 Universe constraints: UNIVERSES: - {elpi.tests.test_API.8 elpi.tests.test_API.7 elpi.tests.test_API.6} |= - elpi.tests.test_API.6 <= elpi.tests.test_API.8 - elpi.tests.test_API.7 <= elpi.tests.test_API.8 + {elpi.tests.test_API_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: +raw: +parameter A explicit (global (const «T1»)) c0 \ + inductive ind1 tt + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.22»))) c1 \ + [constructor K1 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), + constructor K2 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c2 \ + arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), + constructor K3 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) + c2 \ + arity (prod `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] +elab1: +parameter A explicit (global (const «T1»)) c0 \ + inductive ind1 tt + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.23»)) + c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.25»))) c1 \ + [constructor K1 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.28»)) + c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), + constructor K2 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.30»)) + c2 \ + arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), + constructor K3 + (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.33»)) + c2 \ + arity (prod `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] +elab2: +parameter A explicit (global (const «T1»)) c0 \ + parameter B explicit (sort (typ «ind1.u0»)) c1 \ + inductive ind1 tt (arity (sort (typ «ind1.u1»))) c2 \ + [constructor K1 (arity (prod `_` c2 c3 \ c2)), + constructor K2 + (arity (prod `_` (app [global (const «f1»), c0]) c3 \ c2)), + constructor K3 + (arity (prod `a` (app [global (const «f1»), c0]) c3 \ c2))] +raw: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «f1.u0»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +elab1: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «elpi.tests.test_API_elaborate.38»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +elab2: +parameter A explicit (global (const «T1»)) c0 \ + record ind2 (sort (typ «ind2.u0»)) Build_ind2 + (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) + c1 \ + field [coercion off, canonical tt] fld2 + (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) + c2 \ end-record) +raw: +record ind3 (sort (typ «elpi.tests.test_API_elaborate.41»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 + (sort (typ «elpi.tests.test_API_elaborate.40»)) c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +elab1: +record ind3 (sort (typ «elpi.tests.test_API_elaborate.42»)) Build_ind3 + (field [coercion reversible, canonical tt] fld3 + (sort (typ «elpi.tests.test_API_elaborate.43»)) c0 \ + field [coercion off, canonical tt] fld4 + (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) +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: - X = typ «elpi.tests.test_API.9» - Y = typ «elpi.tests.test_API.10» + 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.10 elpi.tests.test_API.9} |= - elpi.tests.test_API.9 < elpi.tests.test_API.10 + {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: - + α21 := Type WEAK CONSTRAINTS: -[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] -[foo (indt «nat»), foo (indt «bool»)] -[] -[foo (indt «nat»)] -hello [int 1, int 2, trm (global (indt «nat»)), str x] -coq.pp.box (coq.pp.hv 2) - [coq.pp.str Module, coq.pp.spc, coq.pp.str Foo, coq.pp.spc, coq.pp.str :=, - coq.pp.brk 1 0, coq.pp.str body, coq.pp.spc, coq.pp.str End Foo.] -Module - Foo - := - body - End Foo. -fix foo (x : ?e3) (y : ?e4) {struct x} : ?e2 := - match x as _elpi_renamed_x_3 return ?e6 with - | true => S (S (S O)) - | false => y - end -fix foo x y {struct x} := if x as _elpi_renamed_x_3 then 3 else y -File "./tests/test_API.v", line 73, characters 37-39: -Warning: -File "./tests/test_API.v", line 73, characters 37-39 -MP is linear: name it _MP (discard) or MP_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 81, characters 54-55: -Warning: -File "./tests/test_API.v", line 81, characters 54-55 -A is linear: name it _A (discard) or A_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 82, characters 56-58: -Warning: -File "./tests/test_API.v", line 82, characters 56-58 -MP is linear: name it _MP (discard) or MP_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 91, characters 29-30: -Warning: -File "./tests/test_API.v", line 91, characters 29-30 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 92, characters 29-30: -Warning: -File "./tests/test_API.v", line 92, characters 29-30 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 92, characters 31-32: -Warning: -File "./tests/test_API.v", line 92, characters 31-32 -Y is linear: name it _Y (discard) or Y_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 93, characters 28-29: -Warning: -File "./tests/test_API.v", line 93, characters 28-29 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 93, characters 30-31: -Warning: -File "./tests/test_API.v", line 93, characters 30-31 -Y is linear: name it _Y (discard) or Y_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 94, characters 36-37: -Warning: -File "./tests/test_API.v", line 94, characters 36-37 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 94, characters 38-39: +unknown_gref +«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» +File "./tests/test_API_elaborate.v", line 160, characters 19-20: Warning: -File "./tests/test_API.v", line 94, characters 38-39 +File "./tests/test_API_elaborate.v", line 160, characters 19-20 Y is linear: name it _Y (discard) or Y_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 94, characters 40-41: -Warning: -File "./tests/test_API.v", line 94, characters 40-41 -Z is linear: name it _Z (discard) or Z_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 95, characters 29-30: -Warning: -File "./tests/test_API.v", line 95, characters 29-30 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API.v", line 95, characters 31-32: +File "./tests/test_API_elaborate.v", line 170, characters 33-34: Warning: -File "./tests/test_API.v", line 95, characters 31-32 +File "./tests/test_API_elaborate.v", line 170, characters 33-34 Y is linear: name it _Y (discard) or Y_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] +Query q X0 +Query r X0 +Result r 1 +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 +Query assignments: + X = «x» +fx : nat -> nat + : nat -> nat +opaque_3 : nat + +opaque_3 is not universe polymorphic +opaque_3 is opaque +Expands to: Constant elpi.tests.test_API_section.opaque_3 +foo : nat + : nat +bar : bool -> nat + : bool -> nat +File "./tests/test_File3.v", line 18, characters 2-16: +Warning: This command does not support this attribute: phase. +[unsupported-attributes,parsing,default] +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: + %arg1 = const «foo» +foo 3 + : nat +Query assignments: + %arg1 = const «f» + %arg2 = const «f» + %arg3 = const «f» + %arg4 = const «f» + %arg5 = 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 +Query assignments: + %arg1 = 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 = const «myi» Query assignments: @@ -3063,298 +1753,193 @@ File "./tests/test_API_TC_CS.v", line 159, characters 32-33 L is linear: name it _L (discard) or L_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] +Coq version: 8.20.1 = 8 . 20 . 1 Query assignments: - E = fun `n` (global (indt «nat»)) c0 \ - fun `t` (app [global (const «T2»), c0]) c1 \ - fun `x` - (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ - app - [global (const «g3»), c0, app [global (const «h»), c0, c1], - app - [global (indc «S»), - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]] - TY = prod `n` (global (indt «nat»)) c0 \ - prod `t` (app [global (const «T2»), c0]) c1 \ - prod `x` - (app [global (const «f3»), c0, app [global (const «h»), c0, c1]]) c2 \ - global (indt «nat») - X1_ = X0 + MA = 8 + MI = 20 + P = 1 + V = 8.20.1 +hello world +A +B +Query assignments: + GR = «nat» +Query assignments: + GR = «Nat.add» + MP = «Coq.Init.Datatypes» +Query assignments: + A = «elpi.tests.test_API.succ» + GR = «Nat.add» + MP = «Coq.Init.Datatypes» + X1 = [loc-gref (const «Nat.add»)] + X2 = [loc-gref (const «Nat.add»)] + X3 = [loc-abbreviation «elpi.tests.test_API.succ»] + X4 = [loc-modpath «Coq.Init.Datatypes»] +Universe constraints: +Query assignments: + X = «elpi.tests.test_API.1» Universe constraints: UNIVERSES: - {elpi.tests.test_API_elaborate.13 elpi.tests.test_API_elaborate.10 - elpi.tests.test_API_elaborate.9} |= - elpi.tests.test_API_elaborate.13 < elpi.tests.test_API_elaborate.9 - Set <= elpi.tests.test_API_elaborate.10 - Set <= elpi.tests.test_API_elaborate.13 - T2.u0 <= elpi.tests.test_API_elaborate.13 - f3.u0 <= elpi.tests.test_API_elaborate.13 + {elpi.tests.test_API.1} |= ALGEBRAIC UNIVERSES: - {elpi.tests.test_API_elaborate.10} + {} FLEXIBLE UNIVERSES: - elpi.tests.test_API_elaborate.10 + SORTS: - α4 := Type - α5 := Type + WEAK CONSTRAINTS: Query assignments: - 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 - X2_ = X0 - X3_ = X1 + X = typ «elpi.tests.test_API.2» + Y = typ «elpi.tests.test_API.3» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.3 elpi.tests.test_API.2} |= + elpi.tests.test_API.2 <= elpi.tests.test_API.3 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + Query assignments: - 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»)] - X4_ = X0 + X = typ «elpi.tests.test_API.4» + Y = typ «elpi.tests.test_API.5» 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 + {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: - α11 := Type + WEAK CONSTRAINTS: -raw: -parameter A explicit (global (const «T1»)) c0 \ - inductive ind1 tt - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.22»))) c1 \ - [constructor K1 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), - constructor K2 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c2 \ - arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), - constructor K3 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.20»)) - c2 \ - arity (prod `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] -elab1: -parameter A explicit (global (const «T1»)) c0 \ - inductive ind1 tt - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.23»)) - c1 \ arity (sort (typ «elpi.tests.test_API_elaborate.25»))) c1 \ - [constructor K1 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.28»)) - c2 \ arity (prod `_` (app [c1, c2]) c3 \ app [c1, c2])), - constructor K2 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.30»)) - c2 \ - arity (prod `_` (app [global (const «f1»), c0]) c3 \ app [c1, c2])), - constructor K3 - (parameter B explicit (sort (typ «elpi.tests.test_API_elaborate.33»)) - c2 \ - arity (prod `a` (app [global (const «f1»), c0]) c3 \ app [c1, c2]))] -elab2: -parameter A explicit (global (const «T1»)) c0 \ - parameter B explicit (sort (typ «ind1.u0»)) c1 \ - inductive ind1 tt (arity (sort (typ «ind1.u1»))) c2 \ - [constructor K1 (arity (prod `_` c2 c3 \ c2)), - constructor K2 - (arity (prod `_` (app [global (const «f1»), c0]) c3 \ c2)), - constructor K3 - (arity (prod `a` (app [global (const «f1»), c0]) c3 \ c2))] -raw: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «f1.u0»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -elab1: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «elpi.tests.test_API_elaborate.38»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -elab2: -parameter A explicit (global (const «T1»)) c0 \ - record ind2 (sort (typ «ind2.u0»)) Build_ind2 - (field [coercion off, canonical tt] fld1 (app [global (const «f1»), c0]) - c1 \ - field [coercion off, canonical tt] fld2 - (app [global (indt «eq»), app [global (const «f1»), c0], c1, c1]) - c2 \ end-record) -raw: -record ind3 (sort (typ «elpi.tests.test_API_elaborate.41»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 - (sort (typ «elpi.tests.test_API_elaborate.40»)) c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -elab1: -record ind3 (sort (typ «elpi.tests.test_API_elaborate.42»)) Build_ind3 - (field [coercion reversible, canonical tt] fld3 - (sort (typ «elpi.tests.test_API_elaborate.43»)) c0 \ - field [coercion off, canonical tt] fld4 - (prod `x` c0 c1 \ app [global (indt «eq»), c0, c1, c1]) c1 \ end-record) -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: - 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»)] + 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_elaborate.50 elpi.tests.test_API_elaborate.49} |= - elpi.tests.test_API_elaborate.50 < elpi.tests.test_API_elaborate.49 - s.u0 <= elpi.tests.test_API_elaborate.50 + {elpi.tests.test_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: - α21 := Type + WEAK CONSTRAINTS: -unknown_gref -«elpi.tests.test_API_elaborate.52» «elpi.tests.test_API_elaborate.52» -File "./tests/test_API_elaborate.v", line 160, characters 19-20: +Query assignments: + X = typ «elpi.tests.test_API.9» + Y = typ «elpi.tests.test_API.10» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API.10 elpi.tests.test_API.9} |= + elpi.tests.test_API.9 < elpi.tests.test_API.10 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +[foo (const «X»), foo (indt «nat»), foo (indt «bool»)] +[foo (indt «nat»), foo (indt «bool»)] +[] +[foo (indt «nat»)] +hello [int 1, int 2, trm (global (indt «nat»)), str x] +coq.pp.box (coq.pp.hv 2) + [coq.pp.str Module, coq.pp.spc, coq.pp.str Foo, coq.pp.spc, coq.pp.str :=, + coq.pp.brk 1 0, coq.pp.str body, coq.pp.spc, coq.pp.str End Foo.] +Module + Foo + := + body + End Foo. +fix foo (x : ?e3) (y : ?e4) {struct x} : ?e2 := + match x as _elpi_renamed_x_3 return ?e6 with + | true => S (S (S O)) + | false => y + end +fix foo x y {struct x} := if x as _elpi_renamed_x_3 then 3 else y +File "./tests/test_API.v", line 73, characters 37-39: Warning: -File "./tests/test_API_elaborate.v", line 160, characters 19-20 +File "./tests/test_API.v", line 73, characters 37-39 +MP is linear: name it _MP (discard) or MP_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 81, characters 54-55: +Warning: +File "./tests/test_API.v", line 81, characters 54-55 +A is linear: name it _A (discard) or A_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 82, characters 56-58: +Warning: +File "./tests/test_API.v", line 82, characters 56-58 +MP is linear: name it _MP (discard) or MP_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 91, characters 29-30: +Warning: +File "./tests/test_API.v", line 91, characters 29-30 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 92, characters 29-30: +Warning: +File "./tests/test_API.v", line 92, characters 29-30 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 92, characters 31-32: +Warning: +File "./tests/test_API.v", line 92, characters 31-32 Y is linear: name it _Y (discard) or Y_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API_elaborate.v", line 170, characters 33-34: +File "./tests/test_API.v", line 93, characters 28-29: Warning: -File "./tests/test_API_elaborate.v", line 170, characters 33-34 +File "./tests/test_API.v", line 93, characters 28-29 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 93, characters 30-31: +Warning: +File "./tests/test_API.v", line 93, characters 30-31 +Y is linear: name it _Y (discard) or Y_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 94, characters 36-37: +Warning: +File "./tests/test_API.v", line 94, characters 36-37 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 94, characters 38-39: +Warning: +File "./tests/test_API.v", line 94, characters 38-39 +Y is linear: name it _Y (discard) or Y_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 94, characters 40-41: +Warning: +File "./tests/test_API.v", line 94, characters 40-41 +Z is linear: name it _Z (discard) or Z_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 95, characters 29-30: +Warning: +File "./tests/test_API.v", line 95, characters 29-30 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API.v", line 95, characters 31-32: +Warning: +File "./tests/test_API.v", line 95, characters 31-32 Y is linear: name it _Y (discard) or Y_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -d1 - : nat -d2 - : nat -i1 - : Prop -i2 - : Prop -k1 - : i1 -k2 - : i2 -r1 - : Set -r2 - : Type -f1 - : r1 -> nat -f2 - : r2 -> nat -Hello [str world!] -Hello [int 46] -Hello [str there] -Hello [str my, str friend] -Hello [str this.is.a.qualified.name] -Hello -[trm - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app [global (indc «S»), global (indc «O»)]])] -Hello -[const-decl test - (some - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app [global (indc «S»), global (indc «O»)]])) (arity (sort prop))] -Hello -[indt-decl - (record test (sort (typ «Set»)) Build_test - (field [coercion off, canonical tt] f1 (global (indt «nat»)) c0 \ - field [coercion off, canonical tt] f2 - (app - [global (indt «eq»), global (indt «nat»), c0, - app [global (indc «S»), global (indc «O»)]]) c1 \ end-record))] -The type of -app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), global (indc «O»)], global (indc «O»)] is -sort prop -1 = true - : Prop -T= -app - [global (indt «eq»), X0, app [global (indc «S»), global (indc «O»)], - global (indc «true»)] -T1= -app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), global (indc «O»)], - app [global (const «bool2nat»), global (indc «true»)]] -Ty= sort prop -nK_bool = 2 - : nat -nK_False = 0 - : nat -Inductive tree' (A : Set) : Set := - leaf' : tree' A | node' : tree' A -> A -> tree' A -> tree' A. - -Arguments tree' A%type_scope -Arguments leaf' A%type_scope -Arguments node' A%type_scope _ _ _ -bob is 24 years old -alice is 21 years old -bob is 24 years old -alice is 21 years old -[attribute elpi.loc - (leaf-loc - File "./examples/tutorial_coq_elpi_command.v", line 610, column 31, characters 17257-17261:), - attribute elpi.phase (leaf-str interp), attribute this (leaf-str ), - attribute more (node [attribute stuff (leaf-str 33)])] -options= -[get-option elpi.loc - File "./examples/tutorial_coq_elpi_command.v", line 643, column 31, characters 18094-18104:, - get-option elpi.phase interp, get-option this tt, get-option more.stuff 33] -33 tt -That is all folks! -going from source to target via plane -synterp x := some _ -interp x := -some - (app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]) -The module is «elpi_examples.tutorial_coq_elpi_command.Module23» -Box.Box.Box.Box.foo = fun n : nat => n + 2 - : nat -> nat - -Arguments Box.Box.Box.Box.foo n%nat_scope -Module NextModule2 := Struct End -File "./examples/tutorial_coq_elpi_command.v", line 610, characters 2-24: -Warning: This command does not support these attributes: more, this. -[unsupported-attributes,parsing,default] -File "./examples/tutorial_coq_elpi_command.v", line 643, characters 2-24: -Warning: This command does not support these attributes: more, this. -[unsupported-attributes,parsing,default] -File "./examples/tutorial_coq_elpi_command.v", line 644, characters 7-14: -Warning: This command does not support this attribute: unknown. -[unsupported-attributes,parsing,default] Query assignments: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -3491,903 +2076,3699 @@ File "./tests/test_API_typecheck.v", line 59, characters 2-4 LE is linear: name it _LE (discard) or LE_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -Query assignments: - BO = fix `add` 0 - (prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ - fun `n` (global (indt «nat»)) c1 \ - fun `m` (global (indt «nat»)) c2 \ - match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) - [c2, - fun `p` (global (indt «nat»)) c3 \ - app [global (indc «S»), app [c0, c3, c2]]] - GR = «Nat.add» - TY = prod `n` (global (indt «nat»)) c0 \ - prod `m` (global (indt «nat»)) c1 \ global (indt «nat») -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 `_elpi_renamed_n_2` (global (indt «nat»)) c3 \ X1 c1 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 `_elpi_renamed_n_2` (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 `_elpi_renamed_n_2` (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») - X1_ = c0 \ c1 \ c2 \ -global (indt «nat») - X2_ = 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_stdlib.test_quotation.2»)) - (X3 c0 c1) /* suspended on X3 */ -Universe constraints: -UNIVERSES: - {elpi_tests_stdlib.test_quotation.3 elpi_tests_stdlib.test_quotation.2 - elpi_tests_stdlib.test_quotation.1} |= - Set <= elpi_tests_stdlib.test_quotation.3 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi_tests_stdlib.test_quotation.3 -SORTS: - α1 - α2 -WEAK CONSTRAINTS: - - -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 `_elpi_renamed_v_1` (app [global (indt «Vector.t»), X1 c0, X2 c0]) - c2 \ X3 c0 c2) - [global (indc «O»), - fun `_` (X4 c0) c1 \ - fun `_` (X5 c0) c2 \ - fun `_` (X6 c0) 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 `_elpi_renamed_v_1` - (app [global (indt «Vector.t»), global (indt «nat»), X8 c0]) c2 \ - global (indt «nat»)) - [global (indc «O»), - fun `_` (X9 c0) c1 \ - fun `_` (X10 c0) c2 \ - fun `_` (X11 c0) c3 \ app [global (indc «S»), global (indc «O»)]] -Query assignments: - T = fun `v` - (app - [global (indt «Vector.t»), global (indt «nat»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) - c0 \ - match c0 - (fun `_` (X7 c0) c1 \ - fun `_elpi_renamed_v_1` - (app [global (indt «Vector.t»), global (indt «nat»), X8 c0]) c2 \ - global (indt «nat»)) - [global (indc «O»), - fun `_` (X9 c0) c1 \ - fun `_` (X10 c0) c2 \ - fun `_` (X11 c0) c3 \ app [global (indc «S»), global (indc «O»)]] - X3_ = c0 \ -X7 c0 - X4_ = c0 \ -global (indt «nat») - X5_ = c0 \ -X8 c0 - X6_ = c0 \ c1 \ -global (indt «nat») - X7_ = c0 \ -X9 c0 - X8_ = c0 \ -X10 c0 - X9_ = c0 \ -X11 c0 -Syntactic constraints: - {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) (sort (typ «elpi_tests_stdlib.test_quotation.10»)) - (X11 c0) /* suspended on X11 */ - {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) (sort (typ «elpi_tests_stdlib.test_quotation.9»)) - (X10 c0) /* 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_stdlib.test_quotation.8»)) - (X9 c0) /* suspended on 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 (X8 c0) (X12 c0) (X8 c0) /* suspended on X8 */ - {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) (sort (typ «elpi_tests_stdlib.test_quotation.6»)) - (X12 c0) /* 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_stdlib.test_quotation.4»)) - (X7 c0) /* suspended on X7 */ -Universe constraints: -UNIVERSES: - {elpi_tests_stdlib.test_quotation.12 elpi_tests_stdlib.test_quotation.11 - elpi_tests_stdlib.test_quotation.10 elpi_tests_stdlib.test_quotation.9 - elpi_tests_stdlib.test_quotation.8 elpi_tests_stdlib.test_quotation.7 - elpi_tests_stdlib.test_quotation.6 elpi_tests_stdlib.test_quotation.5 - elpi_tests_stdlib.test_quotation.4} |= - elpi_tests_stdlib.test_quotation.11 < elpi_tests_stdlib.test_quotation.5 - Set <= Vector.t.u0 - Set <= elpi_tests_stdlib.test_quotation.11 - Set <= elpi_tests_stdlib.test_quotation.12 - elpi_tests_stdlib.test_quotation.11 <= Vector.t.u0 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi_tests_stdlib.test_quotation.12 -SORTS: - α3 - α4 := Type - α5 - α6 - α7 - α8 - α9 -WEAK CONSTRAINTS: - - -3 -Query assignments: - X = 3 -fun `x` X0 c0 \ app [X1, c0] -Query assignments: - X = X1 - X10_ = X0 - Y = fun `x` X0 c0 \ app [X1, c0] -fun `r` (global (indt «nat»)) c0 \ - fun `p` - (prod `y` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) - c1 \ - fun `q` (global (indt «bool»)) c2 \ - prod `y` (global (indt «nat»)) c3 \ - app - [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] -Query assignments: - %arg1 = c0 \ c1 \ c2 \ -prod `y` (global (indt «nat»)) c3 \ - app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] - X = fun `r` (global (indt «nat»)) c0 \ - fun `p` - (prod `y` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) - c1 \ - fun `q` (global (indt «bool»)) c2 \ - prod `y` (global (indt «nat»)) c3 \ - app - [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] -fun u : nat => -{| val := oval u; Sub := Ord u; Sub_rect := inlined_sub_rect |} - : forall u : nat, is_SUB nat (fun x : nat => leq x u) (ord u) -Debug: -[elpi] - gterm2lp: term=(fun u => - {| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |}) -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term={| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |} -Debug: [elpi] gterm2lp: term=SubType -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(oval u) -Debug: [elpi] gterm2lp: term=oval -Debug: [elpi] gterm2lp: term=u -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=inlined_sub_rect -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term=(fun K_S u => - let (x, Px) as u0 return (K u0) := u in K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term=(fun u => let (x, Px) as u0 return (K u0) := u in K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term=(let (x, Px) as u0 return (K u0) := _elpi_renamed_u_3 in - K_S x Px) -Debug: [elpi] gterm2lp: term=_elpi_renamed_u_3 -Debug: [elpi] gterm2lp: term=(fun u0 => K u0) -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(K u0) -Debug: [elpi] gterm2lp: term=K -Debug: [elpi] gterm2lp: term=u0 -Debug: [elpi] gterm2lp: term=(fun x Px => K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(fun Px => K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(K_S x Px) -Debug: [elpi] gterm2lp: term=K_S -Debug: [elpi] gterm2lp: term=x -Debug: [elpi] gterm2lp: term=Px -Debug: -[elpi] - gterm2lp: term=(fun u => - {| val := _; Sub := elpi_code:(K) u; Sub_rect := _ |}) -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] gterm2lp: term={| val := _; Sub := elpi_code:(K) u; Sub_rect := _ |} -Debug: [elpi] gterm2lp: term=SubType -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(elpi_code:(K) u) -Debug: [elpi] gterm2lp: term=elpi_code:(K) -Debug: [elpi] gterm2lp: term=u -Debug: [elpi] gterm2lp: term=_ -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -Debug: -[elpi] - elpi sigma -> coq sigma: before: -SHELF: -FUTURE GOALS STACK: - - -Rocq-Elpi mapping: -RAW: -ELAB: - -Debug: -[elpi] - elpi sigma -> coq sigma: synchronized: -SHELF: -FUTURE GOALS STACK: - +z + : nat +it = elpi_subproof + : True +it : True -Rocq-Elpi mapping: -RAW: -ELAB: +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 +app + [global (indt «eq»), global (indt «nat»), + app + [global (const «map»), + fun `x` (global (indt «nat»)) c1 \ + app + [global (const «Nat.add»), c1, + app [global (indc «S»), global (indc «O»)]]], c0] +app + [global (indt «eq»), global (indt «nat»), + app + [global (const «map»), + fun `x` (global (indt «nat»)) c1 \ + app + [global (const «Nat.add»), c1, + app [global (indc «S»), global (indc «O»)]]], c0] +app + [global (indt «eq»), global (indt «nat»), + app + [global (const «map»), + fun `x0` (global (indt «nat»)) c1 \ + app + [global (const «Nat.add»), c1, + app [global (indc «S»), global (indc «O»)]]], c0] Debug: -[elpi] - elpi sigma -> coq sigma: after: -SHELF: -FUTURE GOALS STACK: - - -Rocq-Elpi mapping: -RAW: -ELAB: - +----<<---- enter: +coq.say raw: + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +raw: +parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) 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 «elpi.tests.test_arg_HOAS.3»)) c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] Debug: -[elpi] - lp2term: depth=0 ctx=[] term=fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +---->>---- exit: +coq.say raw: + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) Debug: -[elpi] - lp2term@0:fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] -Debug: [elpi] lp2term@0:X0 -Debug: [elpi] lp2term: evar: calldepth:0 X0 RAW: -ELAB: - +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app + [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) + Illtyped inductive declaration Debug: -[elpi] - lp2term@1:app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] -Debug: [elpi] lp2term@1:global (indc «SubType») -Debug: [elpi] lp2term@1:X1 c0 -Debug: [elpi] lp2term: evar: calldepth:0 X1 c0 RAW: -ELAB: - -Debug: [elpi] lp2term@1:X2 c0 -Debug: [elpi] lp2term: evar: calldepth:0 X2 c0 RAW: -ELAB: - -Debug: [elpi] lp2term@1:X3 c0 -Debug: [elpi] lp2term: evar: calldepth:0 X3 c0 RAW: -ELAB: - -Debug: [elpi] lp2term@1:app [global (const «oval»), c0] -Debug: [elpi] lp2term@1:global (const «oval») -Debug: [elpi] lp2term@1:c0 -Debug: [elpi] lp2term@1:X4 c0 -Debug: [elpi] lp2term: evar: calldepth:0 X4 c0 RAW: -ELAB: - +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app + [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) + Illtyped inductive declaration Debug: -[elpi] - lp2term@1:fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] -Debug: [elpi] lp2term@1:X5 c0 -Debug: [elpi] lp2term: evar: calldepth:0 X5 c0 RAW: -ELAB: - +----<<---- enter: +coq.say typed: + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +typed: +parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) 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 «elpi.tests.test_arg_HOAS.3»)) c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] Debug: -[elpi] - lp2term@2:fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] -Debug: [elpi] lp2term@2:X6 c0 c1 -Debug: [elpi] lp2term: evar: calldepth:0 X6 c0 c1 RAW: -ELAB: - +---->>---- exit: +coq.say typed: + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) Debug: -[elpi] - lp2term@3:fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] -Debug: [elpi] lp2term@3:X7 c0 c1 c2 -Debug: [elpi] lp2term: evar: calldepth:0 X7 c0 c1 c2 RAW: -ELAB: - +----<<---- enter: +coq.env.add-indt + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + 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 «elpi.tests.test_arg_HOAS.3»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) + X0 Debug: -[elpi] - lp2term@4:match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] -Debug: [elpi] lp2term@4:c3 -Debug: [elpi] lp2term@4:fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4] -Debug: [elpi] lp2term@4:X8 c0 c1 c2 c3 -Debug: [elpi] lp2term: evar: calldepth:0 X8 c0 c1 c2 c3 RAW: -ELAB: - -Debug: [elpi] lp2term@5:app [c1, c4] -Debug: [elpi] lp2term@5:c1 -Debug: [elpi] lp2term@5:c4 +---->>---- exit: +coq.env.add-indt + (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»)]]))]) + «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] Debug: -[elpi] - lp2term@4:fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5] -Debug: [elpi] lp2term@4:X9 c0 c1 c2 c3 -Debug: [elpi] lp2term: evar: calldepth:0 X9 c0 c1 c2 c3 RAW: -ELAB: - -Debug: [elpi] lp2term@5:fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5] -Debug: [elpi] lp2term@5:X10 c0 c1 c2 c3 c4 -Debug: [elpi] lp2term: evar: calldepth:0 X10 c0 c1 c2 c3 c4 RAW: -ELAB: - -Debug: [elpi] lp2term@6:app [c2, c4, c5] -Debug: [elpi] lp2term@6:c2 -Debug: [elpi] lp2term@6:c4 -Debug: [elpi] lp2term@6:c5 +----<<---- enter: +coq.say raw: + (parameter A1 maximal X0 c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ X1)) c2 \ + parameter B2 explicit (sort (typ X2)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ X4)) c3 \ + parameter B2 explicit (sort (typ X5)) c4 \ + arity + (prod `x` (X6 c4) 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 X7)) c3 \ + parameter B2 explicit (sort (typ X8)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +raw: +parameter A1 maximal X0 c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ X1)) c2 \ + parameter B2 explicit (sort (typ X2)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ X4)) c3 \ + parameter B2 explicit (sort (typ X5)) c4 \ + arity + (prod `x` (X6 c4) 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 X7)) c3 \ + parameter B2 explicit (sort (typ X8)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] Debug: -[elpi] - lp2term: out=(fun u : hole hole => - {| - val := oval u; - Sub := hole u hole; - Sub_rect := - fun (K : hole u hole) (K_S : hole K u hole) - (_elpi_renamed_u_3 : hole K_S K u hole) => - let - (x, Px) as u0 - return (hole u0 _elpi_renamed_u_3 K_S K hole) := - _elpi_renamed_u_3 in - K_S x Px - |}) - elpi2coq: - RAW: -ELAB: -SHELF: - - FUTURE GOALS STACK: - - +---->>---- exit: +coq.say raw: + (parameter A1 maximal X0 c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ X1)) c2 \ + parameter B2 explicit (sort (typ X2)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ X4)) c3 \ + parameter B2 explicit (sort (typ X5)) c4 \ + arity + (prod `x` (X6 c4) 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 X7)) c3 \ + parameter B2 explicit (sort (typ X8)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) Debug: -[elpi] - detype: (fun u : hole hole => - {| - val := oval u; - Sub := hole u hole; - Sub_rect := - fun (K : hole u hole) (K_S : hole K u hole) - (_elpi_renamed_u_3 : hole K_S K u hole) => - let - (x, Px) as u0 - return (hole u0 _elpi_renamed_u_3 K_S K hole) := - _elpi_renamed_u_3 in - K_S x Px - |}) -Debug: [elpi] bringing updated sigma back to lp +----<<---- enter: +std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (parameter A1 maximal X0 c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ X1)) c2 \ + parameter B2 explicit (sort (typ X2)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ X4)) c3 \ + parameter B2 explicit (sort (typ X5)) c4 \ + arity + (prod `x` (X6 c4) 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 X7)) c3 \ + parameter B2 explicit (sort (typ X8)) c4 \ + arity + (prod `_` c0 c5 \ + app + [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) + X9) Illtyped inductive declaration Debug: -[elpi] - term2lp: depth=0 ctx= term=(forall u : nat, - is_SUB nat (fun x : nat => leq x u) (ord u)) +---->>---- exit: +std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (parameter A1 maximal X0 c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.41»)) + c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.44»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.47»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.52»)) + c3 \ + parameter B2 explicit + (sort (typ «elpi.tests.test_arg_HOAS.54»)) c4 \ + arity + (prod `x` (X6 c4) 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 «elpi.tests.test_arg_HOAS.61»)) + c3 \ + parameter B2 explicit + (sort (typ «elpi.tests.test_arg_HOAS.63»)) c4 \ + arity + (prod `_` c0 c5 \ + app + [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) + c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) + c3 \ + parameter B2 explicit + (sort (typ «elpi.tests.test_arg_HOAS.55»)) 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 «elpi.tests.test_arg_HOAS.62»)) + c3 \ + parameter B2 explicit + (sort (typ «elpi.tests.test_arg_HOAS.64»)) c4 \ + arity + (prod `_` c0 c5 \ + app + [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) + Illtyped inductive declaration Debug: -[elpi] - term2lp (out): prod `u` (global (indt «nat»)) c0 \ - app - [global (indt «is_SUB»), global (indt «nat»), - fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], - app [global (indt «ord»), c0]] +----<<---- enter: +coq.say typed: + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) + 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 «elpi.tests.test_arg_HOAS.62»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) +typed: +parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) + 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 «elpi.tests.test_arg_HOAS.62»)) c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] Debug: -[elpi] - term2lp: depth=0 ctx= term=(fun u : nat => - {| - val := oval u; - Sub := Ord u; - Sub_rect := inlined_sub_rect - |}) +---->>---- exit: +coq.say typed: + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) + 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 «elpi.tests.test_arg_HOAS.62»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) Debug: -[elpi] - term2lp (out): fun `u` (global (indt «nat»)) c0 \ - app - [global (indc «SubType»), global (indt «nat»), - fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], - app [global (indt «ord»), c0], app [global (const «oval»), c0], - app [global (indc «Ord»), c0], - fun `K` - (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) - c1 \ - fun `K_S` - (prod `x` (global (indt «nat»)) c2 \ - prod `Px` - (app - [global (indt «eq»), global (indt «bool»), - app - [fun `x` (global (indt «nat»)) c3 \ - app [global (const «leq»), c3, c0], c2], - global (indc «true»)]) c3 \ - app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ - fun `_elpi_renamed_u_3` (app [global (indt «ord»), c0]) c3 \ - match c3 - (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) - [fun `x` (global (indt «nat»)) c4 \ - fun `Px` - (app - [global (indt «eq»), global (indt «bool»), - app [global (const «leq»), c4, c0], global (indc «true»)]) - c5 \ app [c2, c4, c5]]] +----<<---- enter: +coq.env.add-indt + (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) + c3 \ + arity + (prod `_` (global (indt «nat»)) c4 \ + sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) + 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 «elpi.tests.test_arg_HOAS.62»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) + X10 Debug: -[elpi] - Elpi: query-compilation:0.0030 static-check:0.0000 optimization:0.0001 runtime:0.0072 (with success) - +---->>---- exit: +coq.env.add-indt + (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 «elpi.tests.test_arg_HOAS.53»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) + 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 «elpi.tests.test_arg_HOAS.62»)) + c3 \ + parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) + c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) + «foo1» +foo1 ?A2 ?B1 ?B2 ?n : Type + : Type +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?n : [ |- nat] +a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 + : foo1 ?A2 ?B1 ?B2 3 +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] Query assignments: - GR = indc «Ord» - K = global (indc «Ord») - T = fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] - T1 = fun `u` (global (indt «nat»)) c0 \ - app - [global (indc «SubType»), global (indt «nat»), - fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], - app [global (indt «ord»), c0], app [global (const «oval»), c0], - app [global (indc «Ord»), c0], - fun `K` - (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) - c1 \ - fun `K_S` - (prod `x` (global (indt «nat»)) c2 \ - prod `Px` - (app - [global (indt «eq»), global (indt «bool»), - app - [fun `x` (global (indt «nat»)) c3 \ - app [global (const «leq»), c3, c0], c2], - global (indc «true»)]) c3 \ - app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ - fun `_elpi_renamed_u_3` (app [global (indt «ord»), c0]) c3 \ - match c3 - (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) - [fun `x` (global (indt «nat»)) c4 \ - fun `Px` - (app - [global (indt «eq»), global (indt «bool»), - app [global (const «leq»), c4, c0], global (indc «true»)]) - c5 \ app [c2, c4, c5]]] - X11_ = X0 - X12_ = X1 - X13_ = X2 - X14_ = X3 - X15_ = X4 - X16_ = X5 - X17_ = X6 - X18_ = X7 - X19_ = X8 - X20_ = X9 - X21_ = X10 - X22_ = global (indt «nat») - X23_ = c0 \ -global (indt «nat») - X24_ = c0 \ -fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0] - X25_ = c0 \ -app [global (indt «ord»), c0] - X26_ = c0 \ -app [global (const «oval»), c0] - X27_ = c0 \ -fun `K` - (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) - c1 \ - fun `K_S` - (prod `x` (global (indt «nat»)) c2 \ - prod `Px` - (app - [global (indt «eq»), global (indt «bool»), - app - [fun `x` (global (indt «nat»)) c3 \ - app [global (const «leq»), c3, c0], c2], global (indc «true»)]) - c3 \ app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ - fun `_elpi_renamed_u_3` (app [global (indt «ord»), c0]) c3 \ - match c3 (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) - [fun `x` (global (indt «nat»)) c4 \ - fun `Px` - (app - [global (indt «eq»), global (indt «bool»), - app [global (const «leq»), c4, c0], global (indc «true»)]) c5 \ - app [c2, c4, c5]] + D = parameter A explicit (sort (typ «t.u0»)) c0 \ + inductive t tt + (parameter y explicit (global (indt «nat»)) c1 \ + arity (sort (typ «elpi.tests.test_arg_HOAS.82»))) c1 \ + [constructor K + (parameter y explicit (global (indt «nat»)) c2 \ + parameter x explicit c0 c3 \ + parameter n maximal (global (indt «nat»)) c4 \ + arity (prod `_` (app [c1, c4]) c5 \ app [c1, c2]))] + I = «t» Universe constraints: UNIVERSES: - {elpi_tests_stdlib.test_quotation.28 elpi_tests_stdlib.test_quotation.27} |= - Set <= is_SUB.u0 - Set <= is_SUB.u1 - Set <= elpi_tests_stdlib.test_quotation.27 - is_SUB.u2 <= elpi_tests_stdlib.test_quotation.28 + {elpi.tests.test_arg_HOAS.82} |= + Set <= elpi.tests.test_arg_HOAS.82 + t.u0 <= elpi.tests.test_arg_HOAS.82 ALGEBRAIC UNIVERSES: - {elpi_tests_stdlib.test_quotation.28 elpi_tests_stdlib.test_quotation.27} + {} FLEXIBLE UNIVERSES: - elpi_tests_stdlib.test_quotation.28 - elpi_tests_stdlib.test_quotation.27 + SORTS: - α24 := Type - α25 := Type + WEAK CONSTRAINTS: Debug: -[elpi] - gterm2lp: term=(fun u => - {| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |}) -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term={| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |} -Debug: [elpi] gterm2lp: term=SubType -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(oval u) -Debug: [elpi] gterm2lp: term=oval -Debug: [elpi] gterm2lp: term=u -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=inlined_sub_rect -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term=(fun K_S u => - let (x, Px) as u0 return (K u0) := u in K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: -[elpi] - gterm2lp: term=(fun u => let (x, Px) as u0 return (K u0) := u in K_S x Px) -Debug: [elpi] gterm2lp: term=_ +----<<---- enter: +coq.say raw: + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) +raw: +record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record) Debug: -[elpi] - gterm2lp: term=(let (x, Px) as u0 return (K u0) := _elpi_renamed_u_3 in - K_S x Px) -Debug: [elpi] gterm2lp: term=_elpi_renamed_u_3 -Debug: [elpi] gterm2lp: term=(fun u0 => K u0) -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(K u0) -Debug: [elpi] gterm2lp: term=K -Debug: [elpi] gterm2lp: term=u0 -Debug: [elpi] gterm2lp: term=(fun x Px => K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(fun Px => K_S x Px) -Debug: [elpi] gterm2lp: term=_ -Debug: [elpi] gterm2lp: term=(K_S x Px) -Debug: [elpi] gterm2lp: term=K_S -Debug: [elpi] gterm2lp: term=x -Debug: [elpi] gterm2lp: term=Px +---->>---- exit: +coq.say raw: + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) Debug: -[elpi] - elpi sigma -> coq sigma: before: -SHELF: -FUTURE GOALS STACK: - - -Rocq-Elpi mapping: -RAW: -ELAB: - +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ + end-record))) Illtyped inductive declaration Debug: -[elpi] - elpi sigma -> coq sigma: synchronized: -SHELF: -FUTURE GOALS STACK: - - -Rocq-Elpi mapping: -RAW: -ELAB: - +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ + end-record))) Illtyped inductive declaration Debug: -[elpi] - elpi sigma -> coq sigma: after: -SHELF: -FUTURE GOALS STACK: - - -Rocq-Elpi mapping: -RAW: -ELAB: - +----<<---- enter: +coq.say typed: + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) +typed: +record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record) Debug: -[elpi] - lp2term: depth=0 ctx=[] term=fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +---->>---- exit: +coq.say typed: + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) Debug: -[elpi] - lp2term@0:fun `u` X0 c0 \ - app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] -Debug: [elpi] lp2term@0:X0 -Debug: [elpi] lp2term: evar: calldepth:0 X0 RAW: -ELAB: - -Debug: [elpi] lp2term: evar: unknown: calldepth:0 X0 -Debug: [elpi] lp2term: evar: create_unknown: whole ctx: ; -Debug: [elpi] lp2term: evar: create_unknown: visible ctx: -Debug: [elpi] restrict_coq_context: named: -Debug: [elpi] lp2term: evar: create_unknown: restricted ctx: +----<<---- enter: +coq.env.add-indt + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) + X0 Debug: -[elpi] - lp2term: evar: create_unknown: new link: ? |> |- ? = ?X41 - EVARS: - ?X41==[ |- Type] (internal placeholder) {?e} - -UNIVERSES: - {elpi_tests_stdlib.test_quotation.29} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α26 -WEAK CONSTRAINTS: - -SHELF: -FUTURE GOALS STACK: - ?X41 - -Debug: [elpi] lp2term@0:X0 +---->>---- exit: +coq.env.add-indt + (record foo (sort (typ «Set»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) + «foo» Debug: -[elpi] lp2term: evar: calldepth:0 X0 RAW: -?X41 <-> X0 -ELAB: -?X41 <-> X0 - -Debug: [elpi] lp2term: evar: already in Coq: ?X41 +----<<---- enter: +coq.say raw: + (record foo (sort (typ X0)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], + global (indc «O»)]) c1 \ end-record)) +raw: +record foo (sort (typ X0)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], + global (indc «O»)]) c1 \ end-record) Debug: -[elpi] - lp2term@1:app - [global (indc «SubType»), X1 c0, X2 c0, X3 c0, - app [global (const «oval»), c0], X4 c0, - fun `K` (X5 c0) c1 \ - fun `K_S` (X6 c0 c1) c2 \ - fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ - match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) - [fun `x` (X9 c0 c1 c2 c3) c4 \ - fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] -Debug: [elpi] lp2term@1:global (indc «SubType») -Debug: [elpi] lp2term@1:X1 c0 +---->>---- exit: +coq.say raw: + (record foo (sort (typ X0)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], + global (indc «O»)]) c1 \ end-record)) Debug: -[elpi] lp2term: evar: calldepth:0 X1 c0 RAW: -?X41 <-> X0 -ELAB: -?X41 <-> X0 - -Debug: [elpi] lp2term: evar: unknown: calldepth:0 X1 -Debug: [elpi] lp2term: evar: create_unknown: whole ctx: ; (u : ?e) -Debug: [elpi] lp2term: evar: create_unknown: visible ctx:c0 -Debug: [elpi] restrict_coq_context: named: +----<<---- enter: +std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (record foo (sort (typ X0)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], + global (indc «O»)]) c1 \ end-record)) X2) + Illtyped inductive declaration Debug: -[elpi] - restrict_coq_context: cur rel ctx: - restrict_coq_context: cur subst: - restrict_coq_context: looking at u(dbl 0) -Debug: [elpi] ?e--0->?e -Debug: [elpi] lp2term: evar: create_unknown: restricted ctx:(u : ?e) -Debug: [elpi] in_elpi_evar:?X42 +---->>---- exit: +std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (record foo (sort (typ «elpi.tests.test_arg_HOAS.85»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], + global (indc «O»)]) c1 \ end-record)) + (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ + end-record))) Illtyped inductive declaration Debug: -[elpi] - lp2term: evar: create_unknown: new link: ? |> |- ? = ?X43 - EVARS: - ?X43==[u |- ?e0] (internal placeholder) {?e1} - ?X42==[u |- Type] (internal placeholder) {?e0} - ?X41==[ |- Type] (internal placeholder) {?e} - -UNIVERSES: - {elpi_tests_stdlib.test_quotation.30 elpi_tests_stdlib.test_quotation.29} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α26 - α27 -WEAK CONSTRAINTS: - -SHELF: -FUTURE GOALS STACK:?X43 ?X42 -?X41 - -Debug: [elpi] lp2term@1:X1 c0 +----<<---- enter: +coq.say typed: + (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) +typed: +record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record) Debug: -[elpi] - lp2term: evar: calldepth:0 X1 c0 - RAW: -?X41 <-> X0 -?X42 <-> X12 -?X43 <-> X1 -ELAB: -?X41 <-> X0 -?X42 <-> X11 -?X43 <-> X1 - -Debug: [elpi] lp2term: evar: already in Coq: ?X43 -Debug: [elpi] lp2term@1:c0 -Debug: [elpi] lp2term@1:X2 c0 +---->>---- exit: +coq.say typed: + (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) Debug: -[elpi] - lp2term: evar: calldepth:0 X2 c0 - RAW: -?X41 <-> X0 -?X42 <-> X12 -?X43 <-> X1 -ELAB: -?X41 <-> X0 -?X42 <-> X11 -?X43 <-> X1 - -Debug: [elpi] lp2term: evar: unknown: calldepth:0 X2 -Debug: [elpi] lp2term: evar: create_unknown: whole ctx: ; (u : ?e) -Debug: [elpi] lp2term: evar: create_unknown: visible ctx:c0 -Debug: [elpi] restrict_coq_context: named: +----<<---- enter: +coq.env.add-indt + (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) + X3 Debug: -[elpi] - restrict_coq_context: cur rel ctx: - restrict_coq_context: cur subst: - restrict_coq_context: looking at u(dbl 0) -Debug: [elpi] ?e--0->?e -Debug: [elpi] lp2term: evar: create_unknown: restricted ctx:(u : ?e) -Debug: [elpi] in_elpi_evar:?X44 +---->>---- exit: +coq.env.add-indt + (record foo (sort (typ «foo.u0»)) Build_foo + (field [coercion off, canonical tt] f + (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ + field [coercion off, canonical tt] _ + (app + [global (indt «eq»), global (indt «nat»), + app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) + «foo» Debug: -[elpi] - lp2term: evar: create_unknown: new link: ? |> |- ? = ?X45 - EVARS: - ?X45==[u |- ?e2] (internal placeholder) {?e3} - ?X44==[u |- Type] (internal placeholder) {?e2} - ?X43==[u |- ?e0] (internal placeholder) {?e1} - ?X42==[u |- Type] (internal placeholder) {?e0} - ?X41==[ |- Type] (internal placeholder) {?e} - -UNIVERSES: - {elpi_tests_stdlib.test_quotation.31 elpi_tests_stdlib.test_quotation.30 +----<<---- enter: +coq.say raw: + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record)) +raw: +parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record) +Debug: +---->>---- exit: +coq.say raw: + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record)) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record))) Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record))) Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record)) +typed: +parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record) +Debug: +---->>---- exit: +coq.say typed: + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record)) +Debug: +----<<---- enter: +coq.env.add-indt + (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record)) X0 +Debug: +---->>---- exit: +coq.env.add-indt + (parameter A explicit (sort (typ «foo.u0»)) c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «foo.u0»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `a` c0 c3 \ + prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (global (indt «nat»)) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` c0 c5 \ + app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ + end-record)) «foo» +Query assignments: + I = «foo» +Debug: +----<<---- enter: +coq.say raw: + (parameter A explicit X0 c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ X1)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `_elpi_renamed_a_1` c0 c3 \ + prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) + c3 \ + field [coercion off, canonical ff] x + (let `w` (X3 c3) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` (X4 c3 c4) c5 \ + app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) + c4 \ end-record)) +raw: +parameter A explicit X0 c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ X1)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `_elpi_renamed_a_1` c0 c3 \ + prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) c3 \ + field [coercion off, canonical ff] x + (let `w` (X3 c3) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` (X4 c3 c4) c5 \ + app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) c4 \ + end-record) +Debug: +---->>---- exit: +coq.say raw: + (parameter A explicit X0 c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ X1)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `_elpi_renamed_a_1` c0 c3 \ + prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) + c3 \ + field [coercion off, canonical ff] x + (let `w` (X3 c3) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` (X4 c3 c4) c5 \ + app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) + c4 \ end-record)) +Debug: +----<<---- enter: +std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (parameter A explicit X0 c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ X1)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `_elpi_renamed_a_1` c0 c3 \ + prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) + c3 \ + field [coercion off, canonical ff] x + (let `w` (X3 c3) + (app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]) c4 \ + prod `x` (X4 c3 c4) c5 \ + app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) + c4 \ end-record)) X6) Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (parameter A explicit X0 c0 \ + parameter B explicit c0 c1 \ + record foo (sort (typ «elpi.tests.test_arg_HOAS.95»)) Build_foo + (field [coercion off, canonical tt] a + (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ + field [coercion reversible, canonical tt] z + (prod `_elpi_renamed_a_1` c0 c3 \ +...TRUNCATED BY DUNE... + app + [global (const «Nat.add»), c2, + app [global (indc «S»), global (indc «O»)]]) + (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ + prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ X5 c0 c1 c2) X7) + illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.elaborate-skeleton + (fun `P` (sort (typ «elpi.tests.test_arg_HOAS.109»)) c0 \ + fun `w` c0 c1 \ + fun `n` (global (indt «nat»)) c2 \ + app + [global (const «Nat.add»), c2, + app [global (indc «S»), global (indc «O»)]]) + (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ + prod `w` c0 c1 \ + prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) + (fun `P` (sort (typ «elpi.tests.test_arg_HOAS.110»)) c0 \ + fun `w` c0 c1 \ + fun `n` (global (indt «nat»)) c2 \ + app + [global (const «Nat.add»), c2, + app [global (indc «S»), global (indc «O»)]])) + illtyped definition +Debug: +----<<---- enter: +coq.env.add-const x1 + (fun `P` (sort (typ «elpi.tests.test_arg_HOAS.110»)) c0 \ + fun `w` c0 c1 \ + fun `n` (global (indt «nat»)) c2 \ + app + [global (const «Nat.add»), c2, + app [global (indc «S»), global (indc «O»)]]) + (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ + prod `w` c0 c1 \ + prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X8 X9 +Debug: +---->>---- exit: +coq.env.add-const x1 + (fun `P` (sort (typ «x1.u1»)) c0 \ + fun `w` c0 c1 \ + fun `n` (global (indt «nat»)) c2 \ + app + [global (const «Nat.add»), c2, + app [global (indc «S»), global (indc «O»)]]) + (prod `P` (sort (typ «x1.u0»)) c0 \ + prod `w` c0 c1 \ + prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X8 «x1» +x1 : forall P : Type, P -> nat -> nat + : forall P : Type, P -> nat -> nat +eq_refl : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) + : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) +Debug: +----<<---- enter: +coq.arity->term + (parameter n explicit (global (indt «nat»)) c0 \ + arity (sort (typ «elpi.tests.test_arg_HOAS.113»))) X0 +Debug: +---->>---- exit: +coq.arity->term + (parameter n explicit (global (indt «nat»)) c0 \ + arity (sort (typ «elpi.tests.test_arg_HOAS.113»))) + (prod `n` (global (indt «nat»)) c0 \ + sort (typ «elpi.tests.test_arg_HOAS.113»)) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-ty + (prod `n` (global (indt «nat»)) c0 \ + sort (typ «elpi.tests.test_arg_HOAS.113»)) X1) illtyped axiom +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-ty + (prod `n` (global (indt «nat»)) c0 \ + sort (typ «elpi.tests.test_arg_HOAS.113»)) + (typ «elpi.tests.test_arg_HOAS.114»)) illtyped axiom +Debug: +----<<---- enter: +coq.env.add-axiom y + (prod `n` (global (indt «nat»)) c0 \ + sort (typ «elpi.tests.test_arg_HOAS.113»)) X2 +Debug: +---->>---- exit: +coq.env.add-axiom y + (prod `n` (global (indt «nat»)) c0 \ sort (typ «y.u0»)) «y» +y : nat -> Type + : nat -> Type +Debug: +----<<---- enter: +coq.arity->term + (parameter n explicit (global (indt «nat»)) c0 \ + arity (global (indt «nat»))) X0 +Debug: +---->>---- exit: +coq.arity->term + (parameter n explicit (global (indt «nat»)) c0 \ + arity (global (indt «nat»))) + (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck + (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) + (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»))) + illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck + (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) + (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»))) + illtyped definition +Debug: +----<<---- enter: +coq.env.add-const x + (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) + (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) X1 X2 +Debug: +---->>---- exit: +coq.env.add-const x + (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) + (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) X1 «x» +parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) + c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `x` (global (indt «nat»)) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c4, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]]) c6 \ + app [c2, c3, c4, c5])), + constructor a_k2 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] +Query assignments: + D = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ + parameter A2 explicit c0 c1 \ + inductive foo1 tt + (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ + arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) + c2 \ + [constructor a_k1 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `x` (global (indt «nat»)) c5 \ + prod `_` + (app + [c2, app [global (indt «prod»), c3, c3], c4, + app + [global (indc «S»), + app + [global (indc «S»), + app [global (indc «S»), global (indc «O»)]]]]) c6 \ + app [c2, c3, c4, c5])), + constructor a_k2 + (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ + parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ + arity + (prod `_` c0 c5 \ + app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] + I = «inductive_nup.foo1» +foo1 ?A2 ?B1 ?B2 ?n : Type + : Type +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?n : [ |- nat] +a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 + : foo1 ?A2 ?B1 ?B2 3 +where +?A1 : [ |- Type] +?A2 : [ |- ?A1] +?B1 : [ |- Type] +?B2 : [ |- Type] +?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] +Query assignments: + I = «inductive_nup.r» + R = parameter A explicit (sort (typ «r.u0»)) c0 \ + parameter a explicit c0 c1 \ + record r (sort (typ «r.u0»)) R + (field [coercion reversible, canonical tt] f (prod `_` c0 c2 \ c0) c2 \ + field [coercion off, canonical tt] g c0 c3 \ + field [coercion off, canonical tt] p + (app [global (indt «eq»), c0, c1, c3]) c4 \ end-record) +Record r (A : Type) (a : A) : Type := R { f : A -> A; g : A; p : a = g }. + +Arguments r A%type_scope a +Arguments R A%type_scope a f%function_scope g p +Arguments f A%type_scope a record _ +Arguments g A%type_scope a record +Arguments p A%type_scope a record +Debug: +----<<---- enter: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) +raw: inductive X1 tt (arity (sort prop)) c0 \ [] +Debug: +---->>---- exit: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) + Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) + Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) +typed: inductive X1 tt (arity (sort prop)) c0 \ [] +Debug: +---->>---- exit: +coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) +Debug: +----<<---- enter: +coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) X0 +Debug: +---->>---- exit: +coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) «X1» +X1 : Prop + +X1 is not universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X1 +Debug: +----<<---- enter: +coq.say raw: + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ + []) (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) +raw: +inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ [] +upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt +Debug: +---->>---- exit: +coq.say raw: + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ + []) (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) +Debug: ----<<---- enter: coq.univ.print +Universe constraints: UNIVERSES: + {eu1} |= + ALGEBRAIC UNIVERSES: + {} + FLEXIBLE UNIVERSES: + eu1 + SORTS: + + WEAK CONSTRAINTS: + + +Debug: ---->>---- exit: coq.univ.print +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) + c0 \ [])) Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) + c0 \ [])) Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ + []) +typed: +inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ [] +Debug: +---->>---- exit: +coq.say typed: + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ + []) +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) X0 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) + => + coq.env.add-indt + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ + []) X1 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) + => + coq.env.add-indt + (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ + []) «X3» +Debug: +----<<---- enter: +coq.say raw: + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ + []) (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) +raw: +inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ [] +upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt +Debug: +---->>---- exit: +coq.say raw: + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ + []) (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) +Debug: ----<<---- enter: coq.univ.print +Universe constraints: UNIVERSES: + {eu2} |= + ALGEBRAIC UNIVERSES: + {} + FLEXIBLE UNIVERSES: + eu2 + SORTS: + + WEAK CONSTRAINTS: + + +Debug: ---->>---- exit: coq.univ.print +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) + c0 \ [])) Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) + c0 \ [])) Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ + []) +typed: +inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ [] +Debug: +---->>---- exit: +coq.say typed: + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ + []) +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) X0 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) + (get-option coq:udecl-cumul + (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl-cumul + (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) => + coq.env.add-indt + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ + []) X1 +Debug: +---->>---- exit: +get-option coq:udecl-cumul + (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) => + coq.env.add-indt + (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ + []) «X4» +X3@{eu1} : Type@{eu1} +(* eu1 |= *) + +X3 is universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X3 +X4@{eu2} : Type@{eu2} +(* *eu2 |= *) + +X4 is universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X4 +Query assignments: + GR = indt «X3» +Universe constraints: +UNIVERSES: + {elpi.tests.test_arg_HOAS.145} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_arg_HOAS.145 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + GR = indt «X4» +Universe constraints: +UNIVERSES: + {elpi.tests.test_arg_HOAS.146} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_arg_HOAS.146 +SORTS: + +WEAK CONSTRAINTS: + + +Debug: +----<<---- enter: +coq.say raw: + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ + []) (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) +raw: +inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ [] +upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff +Debug: +---->>---- exit: +coq.say raw: + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ + []) (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) +Debug: ----<<---- enter: coq.univ.print +Universe constraints: UNIVERSES: + {eu3} |= + ALGEBRAIC UNIVERSES: + {} + FLEXIBLE UNIVERSES: + eu3 + SORTS: + + WEAK CONSTRAINTS: + + +Debug: ---->>---- exit: coq.univ.print +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) + c0 \ [])) Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) + c0 \ [])) Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ + []) +typed: +inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ [] +Debug: +---->>---- exit: +coq.say typed: + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ + []) +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) X0 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) + => + coq.env.add-indt + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ + []) X1 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) + => + coq.env.add-indt + (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ + []) «X5» +X5@{eu3} : Type@{eu3} +(* eu3 |= *) + +X5 is universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X5 +Debug: +----<<---- enter: +coq.say raw: + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) +raw: +inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))] +upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff +Debug: +---->>---- exit: +coq.say raw: + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) +Debug: ----<<---- enter: coq.univ.print +Universe constraints: UNIVERSES: + {eu5 eu4} |= eu4 < eu5 + ALGEBRAIC UNIVERSES: + {} + FLEXIBLE UNIVERSES: + eu5 + eu4 + SORTS: + + WEAK CONSTRAINTS: + + +Debug: ---->>---- exit: coq.univ.print +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) + c0 \ + [constructor K + (arity + (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))])) + Illtyped inductive declaration +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck-indt-decl + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) + c0 \ + [constructor K + (arity + (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))])) + Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) +typed: +inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))] +Debug: +---->>---- exit: +coq.say typed: + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) + X0 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) + (get-option coq:udecl + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] + ff)) +Debug: +----<<---- enter: +get-option coq:udecl + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) + => + coq.env.add-indt + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) + X1 +Debug: +---->>---- exit: +get-option coq:udecl + (upoly-decl + [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff + [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) + => + coq.env.add-indt + (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ + [constructor K + (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) + «X6» +X6@{eu4 eu5} : Type@{eu5} +(* eu4 eu5 |= eu4 < eu5 *) + +X6 is universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X6 +Debug: +----<<---- enter: +coq.say raw: (inductive X8 tt (arity (sort (typ X0))) c0 \ []) + (upoly-decl [] tt [] tt) +raw: inductive X8 tt (arity (sort (typ X0))) c0 \ [] upoly-decl [] tt [] tt +Debug: +---->>---- exit: +coq.say raw: (inductive X8 tt (arity (sort (typ X0))) c0 \ []) + (upoly-decl [] tt [] tt) +Debug: ----<<---- enter: coq.univ.print +Universe constraints: +Debug: ---->>---- exit: coq.univ.print +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (inductive X8 tt (arity (sort (typ X0))) c0 \ []) X1) + Illtyped inductive declaration +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-indt-decl-skeleton + (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) + c0 \ []) + (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) + c0 \ [])) Illtyped inductive declaration +Debug: +----<<---- enter: +coq.say typed: + (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ + []) +typed: +inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ [] +Debug: +---->>---- exit: +coq.say typed: + (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ + []) +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X2 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [] tt [] tt) => + coq.env.add-indt + (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ + []) X3 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [] tt [] tt) => + coq.env.add-indt + (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ + []) «X8» +X8@{u} : Type@{u} +(* u |= *) + +X8 is universe polymorphic +Expands to: Inductive elpi.tests.test_arg_HOAS.X8 +Debug: +----<<---- enter: +coq.arity->term + (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + parameter x explicit c0 c1 \ arity c0) X0 +Debug: +---->>---- exit: +coq.arity->term + (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + parameter x explicit c0 c1 \ arity c0) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + prod `x` c0 c1 \ c0) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + prod `x` c0 c1 \ c0)) illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + prod `x` c0 c1 \ c0)) illtyped definition +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [] tt [] tt) => + coq.env.add-const f1 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + prod `x` c0 c1 \ c0) X2 X3 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [] tt [] tt) => + coq.env.add-const f1 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ + prod `x` c0 c1 \ c0) X2 «f1» +f1@{u} : forall T : Type@{u}, T -> T +(* u |= *) + +f1 is universe polymorphic +Arguments f1 T%type_scope x +f1 is transparent +Expands to: Constant elpi.tests.test_arg_HOAS.f1 +Debug: +----<<---- enter: +coq.arity->term + (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + parameter x explicit c0 c2 \ arity c0) X0 +Debug: +---->>---- exit: +coq.arity->term + (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + parameter x explicit c0 c2 \ arity c0) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + prod `x` c0 c2 \ c0) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + prod `x` c0 c2 \ c0)) illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + prod `x` c0 c2 \ c0)) illtyped definition +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) X1 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) + => + coq.env.add-const f2 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + prod `x` c0 c2 \ c0) X2 X3 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) + => + coq.env.add-const f2 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ + prod `x` c0 c2 \ c0) X2 «f2» +f2@{u} : forall T : Type@{u}, Type@{u} -> T -> T +(* u |= *) + +f2 is universe polymorphic +Arguments f2 (T T1)%type_scope x +f2 is transparent +Expands to: Constant elpi.tests.test_arg_HOAS.f2 +Debug: +----<<---- enter: +coq.arity->term + (parameter T explicit (sort (typ X0)) c0 \ + parameter x explicit c0 c1 \ arity (X1 c1)) X2 +Debug: +---->>---- exit: +coq.arity->term + (parameter T explicit (sort (typ X0)) c0 \ + parameter x explicit c0 c1 \ arity (X1 c1)) + (prod `T` (sort (typ X0)) c0 \ prod `x` c0 c1 \ X1 c1) +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton + (prod `T` (sort (typ X0)) c0 \ prod `x` c0 c1 \ X1 c1) X3 X4) + illtyped arity +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + prod `x` c0 c1 \ X1 c1) (typ «elpi.tests.test_arg_HOAS.183») + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + prod `x` c0 c1 \ X5 c0 c1)) illtyped arity +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton (fun `T` (sort (typ X6)) c0 \ fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + prod `x` c0 c1 \ X5 c0 c1) X7) illtyped definition +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.184»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + prod `x` c0 c1 \ c0) + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + fun `x` c0 c1 \ c1)) illtyped definition +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X8 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [] tt [] tt) => + coq.env.add-const f3 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + prod `x` c0 c1 \ c0) X9 X10 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [] tt [] tt) => + coq.env.add-const f3 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + fun `x` c0 c1 \ c1) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ + prod `x` c0 c1 \ c0) X9 «f3» +f3@{u} : forall T : Type@{u}, T -> T +(* u |= *) + +f3 is universe polymorphic +Arguments f3 T%type_scope x +f3 is transparent +Expands to: Constant elpi.tests.test_arg_HOAS.f3 +Debug: +----<<---- enter: +coq.arity->term + (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + parameter x explicit c0 c2 \ arity (X0 c2)) X1 +Debug: +---->>---- exit: +coq.arity->term + (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + parameter x explicit c0 c2 \ arity (X0 c2)) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ X0 c2) +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ X0 c2) X2 X3) illtyped arity +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ X0 c2) (typ «elpi.tests.test_arg_HOAS.187») + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ X4 c0 c1 c2)) illtyped arity +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ X4 c0 c1 c2) X5) illtyped definition +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ c0) + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + fun `x` c0 c2 \ c2)) illtyped definition +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) X6 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) + => + coq.env.add-const f4 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ c0) X7 X8 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) + => + coq.env.add-const f4 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ + prod `x` c0 c2 \ c0) X7 «f4» +f4@{u} : forall T : Type@{u}, Type@{u} -> T -> T +(* u |= *) + +f4 is universe polymorphic +Arguments f4 (T T1)%type_scope x +f4 is transparent +Expands to: Constant elpi.tests.test_arg_HOAS.f4 +Debug: +----<<---- 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 c2)) X1 +Debug: +---->>---- exit: +coq.arity->term + (parameter T explicit (sort (typ «uuu»)) c0 \ + parameter T1 explicit (sort (typ «uuu»)) c1 \ + parameter x explicit c0 c2 \ arity (X0 c2)) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ X0 c2) +Debug: +----<<---- enter: +std.assert-ok! + (coq.elaborate-ty-skeleton + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ X0 c2) X2 X3) + illtyped arity +Debug: +---->>---- exit: +std.assert-ok! + (coq.elaborate-ty-skeleton + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ X0 c2) + (typ «elpi.tests.test_arg_HOAS.192») + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ + prod `x` c0 c2 \ X4 c0 c1 c2)) illtyped arity +Debug: +----<<---- enter: +std.assert-ok! + (coq.elaborate-skeleton + (fun `T` (sort (typ «uuu»)) c0 \ + fun `T1` (sort (typ «uuu»)) c1 \ fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ + prod `x` c0 c2 \ X4 c0 c1 c2) X5) illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.elaborate-skeleton + (fun `T` (sort (typ «uuu»)) c0 \ + fun `T1` (sort (typ «uuu»)) c1 \ fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ + prod `x` c0 c2 \ c0) + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.193»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.194»)) c1 \ + fun `x` c0 c2 \ c2)) illtyped definition +Debug: +----<<---- enter: +coq.env.add-const f5 + (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.193»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.194»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ + prod `x` c0 c2 \ c0) X6 X7 +Debug: +---->>---- exit: +coq.env.add-const f5 + (fun `T` (sort (typ «f5.u2»)) c0 \ + 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) X6 «f5» +Debug: +----<<---- enter: +coq.arity->term + (parameter T explicit (sort (typ «uuu»)) c0 \ + parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + parameter x explicit c0 c2 \ arity c0) X0 +Debug: +---->>---- exit: +coq.arity->term + (parameter T explicit (sort (typ «uuu»)) c0 \ + parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + parameter x explicit c0 c2 \ arity c0) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + prod `x` c0 c2 \ c0) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck + (fun `T` (sort (typ «uuu»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + prod `x` c0 c2 \ c0)) illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck + (fun `T` (sort (typ «uuu»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + prod `x` c0 c2 \ c0)) illtyped definition +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) X1 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) + => + coq.env.add-const f6 + (fun `T` (sort (typ «uuu»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + prod `x` c0 c2 \ c0) X2 X3 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) + => + coq.env.add-const f6 + (fun `T` (sort (typ «uuu»)) c0 \ + fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + fun `x` c0 c2 \ c2) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ + prod `x` c0 c2 \ c0) X2 «f6» +f6@{uuux} : forall T : Type@{uuu}, Type@{uuux} -> T -> T +(* uuux |= *) + +f6 is universe polymorphic +Arguments f6 (T T1)%type_scope x +f6 is transparent +Expands to: Constant elpi.tests.test_arg_HOAS.f6 +Debug: +----<<---- enter: +coq.arity->term + (arity + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) X0 +Debug: +---->>---- exit: +coq.arity->term + (arity + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck (pglobal (const «f6») «Set») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) + illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck (pglobal (const «f6») «Set») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) + illtyped definition +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [] tt [] tt) => + 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 X3 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [] tt [] tt) => + 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» +Debug: ----<<---- enter: coq.arity->term (arity X0) X1 +Debug: ---->>---- exit: coq.arity->term (arity X1) X1 +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! (coq.elaborate-ty-skeleton X1 X2 X3) illtyped arity +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton X1 (typ «elpi.tests.test_arg_HOAS.196») (X4)) + illtyped arity +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton (pglobal (const «f6») «Set») (X4) X5) + illtyped definition +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton (pglobal (const «f6») «Set») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) + (pglobal (const «f6») «Set»)) illtyped definition +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X6 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- 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 +Debug: +---->>---- exit: +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 «f8» +Debug: +----<<---- enter: +coq.arity->term + (arity + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) X0 +Debug: +---->>---- exit: +coq.arity->term + (arity + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck (pglobal (const «f6») «uuu») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) + illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck (pglobal (const «f6») «uuu») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) + illtyped definition +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- enter: +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 X3 +Debug: +---->>---- 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'» +Debug: ----<<---- enter: coq.arity->term (arity X0) X1 +Debug: ---->>---- exit: coq.arity->term (arity X1) X1 +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! (coq.elaborate-ty-skeleton X1 X2 X3) illtyped arity +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton X1 (typ «elpi.tests.test_arg_HOAS.197») (X4)) + illtyped arity +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton (pglobal (const «f6») «uuu») (X4) X5) + illtyped definition +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton (pglobal (const «f6») «uuu») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) + (pglobal (const «f6») «uuu»)) illtyped definition +Debug: +----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X6 +Debug: +---->>---- exit: +coq.upoly-decl->attribute (upoly-decl [] tt [] tt) + (get-option coq:udecl (upoly-decl [] tt [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [] tt [] tt) => + 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 X8 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [] tt [] tt) => + 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: +----<<---- enter: +coq.arity->term + (arity + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0)) X0 +Debug: +---->>---- exit: +coq.arity->term + (arity + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0)) + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0) +Debug: +----<<---- enter: +std.assert-ok! + (coq.typecheck (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0)) illtyped definition +Debug: +---->>---- exit: +std.assert-ok! + (coq.typecheck (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0)) illtyped definition +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) X1 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) + => + coq.env.add-const f7'' + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0) X2 X3 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) + => + coq.env.add-const f7'' + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ + prod `x` c0 c2 \ c0) X2 «f7''» +Debug: ----<<---- enter: coq.arity->term (arity X0) X1 +Debug: ---->>---- exit: coq.arity->term (arity X1) X1 +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! (coq.elaborate-ty-skeleton X1 X2 X3) illtyped arity +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-ty-skeleton X1 (typ «elpi.tests.test_arg_HOAS.200») (X4)) + illtyped arity +Debug: +----<<---- enter: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») (X4) X5) + illtyped definition +Debug: +---->>---- exit: +get-option coq:keepunivs tt => + std.assert-ok! + (coq.elaborate-skeleton + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.199»)) c1 \ + prod `x` c0 c2 \ c0) + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199»)) + illtyped definition +Debug: +----<<---- enter: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) X6 +Debug: +---->>---- exit: +coq.upoly-decl->attribute + (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) + (get-option coq:udecl + (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt)) +Debug: +----<<---- enter: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) + => + coq.env.add-const f8'' + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.199»)) c1 \ + prod `x` c0 c2 \ c0) X7 X8 +Debug: +---->>---- exit: +get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) + => + coq.env.add-const f8'' + (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») + (prod `T` (sort (typ «uuu»)) c0 \ + prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.199»)) c1 \ + prod `x` c0 c2 \ c0) X7 «f8''» +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)) +2 +fun `x` X0 c0 \ fun `y` (X1 c0) c1 \ app [global (const «Nat.add»), c0, c1] +File "./tests/test_arg_HOAS.v", line 283, characters 0-68: +Warning: Automatically putting X1 in Prop even though it was declared with +Type. +Unset Automatic Proposition Inductives to prevent this (it will become the +default in a future version). +If you instead put X1 explicitly in Prop, set Dependent Proposition +Eliminators around the declaration for full backwards compatibility. +[automatic-prop-lowering,deprecated-since-8.20,deprecated,default] +Query assignments: + BO = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]] + GR = «Nat.add» + TY = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») +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 `_elpi_renamed_n_2` (global (indt «nat»)) c3 \ X1 c1 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 `_elpi_renamed_n_2` (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 `_elpi_renamed_n_2` (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») + X1_ = c0 \ c1 \ c2 \ +global (indt «nat») + X2_ = 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_stdlib.test_quotation.2»)) + (X3 c0 c1) /* suspended on X3 */ +Universe constraints: +UNIVERSES: + {elpi_tests_stdlib.test_quotation.3 elpi_tests_stdlib.test_quotation.2 + elpi_tests_stdlib.test_quotation.1} |= + Set <= elpi_tests_stdlib.test_quotation.3 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi_tests_stdlib.test_quotation.3 +SORTS: + α1 + α2 +WEAK CONSTRAINTS: + + +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 `_elpi_renamed_v_1` (app [global (indt «Vector.t»), X1 c0, X2 c0]) + c2 \ X3 c0 c2) + [global (indc «O»), + fun `_` (X4 c0) c1 \ + fun `_` (X5 c0) c2 \ + fun `_` (X6 c0) 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 `_elpi_renamed_v_1` + (app [global (indt «Vector.t»), global (indt «nat»), X8 c0]) c2 \ + global (indt «nat»)) + [global (indc «O»), + fun `_` (X9 c0) c1 \ + fun `_` (X10 c0) c2 \ + fun `_` (X11 c0) c3 \ app [global (indc «S»), global (indc «O»)]] +Query assignments: + T = fun `v` + (app + [global (indt «Vector.t»), global (indt «nat»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]) + c0 \ + match c0 + (fun `_` (X7 c0) c1 \ + fun `_elpi_renamed_v_1` + (app [global (indt «Vector.t»), global (indt «nat»), X8 c0]) c2 \ + global (indt «nat»)) + [global (indc «O»), + fun `_` (X9 c0) c1 \ + fun `_` (X10 c0) c2 \ + fun `_` (X11 c0) c3 \ app [global (indc «S»), global (indc «O»)]] + X3_ = c0 \ +X7 c0 + X4_ = c0 \ +global (indt «nat») + X5_ = c0 \ +X8 c0 + X6_ = c0 \ c1 \ +global (indt «nat») + X7_ = c0 \ +X9 c0 + X8_ = c0 \ +X10 c0 + X9_ = c0 \ +X11 c0 +Syntactic constraints: + {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) (sort (typ «elpi_tests_stdlib.test_quotation.10»)) + (X11 c0) /* suspended on X11 */ + {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) (sort (typ «elpi_tests_stdlib.test_quotation.9»)) + (X10 c0) /* 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_stdlib.test_quotation.8»)) + (X9 c0) /* suspended on 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 (X8 c0) (X12 c0) (X8 c0) /* suspended on X8 */ + {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) (sort (typ «elpi_tests_stdlib.test_quotation.6»)) + (X12 c0) /* 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_stdlib.test_quotation.4»)) + (X7 c0) /* suspended on X7 */ +Universe constraints: +UNIVERSES: + {elpi_tests_stdlib.test_quotation.12 elpi_tests_stdlib.test_quotation.11 + elpi_tests_stdlib.test_quotation.10 elpi_tests_stdlib.test_quotation.9 + elpi_tests_stdlib.test_quotation.8 elpi_tests_stdlib.test_quotation.7 + elpi_tests_stdlib.test_quotation.6 elpi_tests_stdlib.test_quotation.5 + elpi_tests_stdlib.test_quotation.4} |= + elpi_tests_stdlib.test_quotation.11 < elpi_tests_stdlib.test_quotation.5 + Set <= Vector.t.u0 + Set <= elpi_tests_stdlib.test_quotation.11 + Set <= elpi_tests_stdlib.test_quotation.12 + elpi_tests_stdlib.test_quotation.11 <= Vector.t.u0 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi_tests_stdlib.test_quotation.12 +SORTS: + α3 + α4 := Type + α5 + α6 + α7 + α8 + α9 +WEAK CONSTRAINTS: + + +3 +Query assignments: + X = 3 +fun `x` X0 c0 \ app [X1, c0] +Query assignments: + X = X1 + X10_ = X0 + Y = fun `x` X0 c0 \ app [X1, c0] +fun `r` (global (indt «nat»)) c0 \ + fun `p` + (prod `y` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) + c1 \ + fun `q` (global (indt «bool»)) c2 \ + prod `y` (global (indt «nat»)) c3 \ + app + [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] +Query assignments: + %arg1 = c0 \ c1 \ c2 \ +prod `y` (global (indt «nat»)) c3 \ + app [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] + X = fun `r` (global (indt «nat»)) c0 \ + fun `p` + (prod `y` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, global (indc «O»)]) + c1 \ + fun `q` (global (indt «bool»)) c2 \ + prod `y` (global (indt «nat»)) c3 \ + app + [global (indt «eq»), global (indt «nat»), c3, global (indc «O»)] +fun u : nat => +{| val := oval u; Sub := Ord u; Sub_rect := inlined_sub_rect |} + : forall u : nat, is_SUB nat (fun x : nat => leq x u) (ord u) +Debug: +[elpi] + gterm2lp: term=(fun u => + {| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |}) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term={| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |} +Debug: [elpi] gterm2lp: term=SubType +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(oval u) +Debug: [elpi] gterm2lp: term=oval +Debug: [elpi] gterm2lp: term=u +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=inlined_sub_rect +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term=(fun K_S u => + let (x, Px) as u0 return (K u0) := u in K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term=(fun u => let (x, Px) as u0 return (K u0) := u in K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term=(let (x, Px) as u0 return (K u0) := _elpi_renamed_u_3 in + K_S x Px) +Debug: [elpi] gterm2lp: term=_elpi_renamed_u_3 +Debug: [elpi] gterm2lp: term=(fun u0 => K u0) +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(K u0) +Debug: [elpi] gterm2lp: term=K +Debug: [elpi] gterm2lp: term=u0 +Debug: [elpi] gterm2lp: term=(fun x Px => K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(fun Px => K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(K_S x Px) +Debug: [elpi] gterm2lp: term=K_S +Debug: [elpi] gterm2lp: term=x +Debug: [elpi] gterm2lp: term=Px +Debug: +[elpi] + gterm2lp: term=(fun u => + {| val := _; Sub := elpi_code:(K) u; Sub_rect := _ |}) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] gterm2lp: term={| val := _; Sub := elpi_code:(K) u; Sub_rect := _ |} +Debug: [elpi] gterm2lp: term=SubType +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(elpi_code:(K) u) +Debug: [elpi] gterm2lp: term=elpi_code:(K) +Debug: [elpi] gterm2lp: term=u +Debug: [elpi] gterm2lp: term=_ +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +Debug: +[elpi] + elpi sigma -> coq sigma: before: +SHELF: +FUTURE GOALS STACK: + + +Rocq-Elpi mapping: +RAW: +ELAB: + +Debug: +[elpi] + elpi sigma -> coq sigma: synchronized: +SHELF: +FUTURE GOALS STACK: + + +Rocq-Elpi mapping: +RAW: +ELAB: + +Debug: +[elpi] + elpi sigma -> coq sigma: after: +SHELF: +FUTURE GOALS STACK: + + +Rocq-Elpi mapping: +RAW: +ELAB: + +Debug: +[elpi] + lp2term: depth=0 ctx=[] term=fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +Debug: +[elpi] + lp2term@0:fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +Debug: [elpi] lp2term@0:X0 +Debug: [elpi] lp2term: evar: calldepth:0 X0 RAW: +ELAB: + +Debug: +[elpi] + lp2term@1:app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +Debug: [elpi] lp2term@1:global (indc «SubType») +Debug: [elpi] lp2term@1:X1 c0 +Debug: [elpi] lp2term: evar: calldepth:0 X1 c0 RAW: +ELAB: + +Debug: [elpi] lp2term@1:X2 c0 +Debug: [elpi] lp2term: evar: calldepth:0 X2 c0 RAW: +ELAB: + +Debug: [elpi] lp2term@1:X3 c0 +Debug: [elpi] lp2term: evar: calldepth:0 X3 c0 RAW: +ELAB: + +Debug: [elpi] lp2term@1:app [global (const «oval»), c0] +Debug: [elpi] lp2term@1:global (const «oval») +Debug: [elpi] lp2term@1:c0 +Debug: [elpi] lp2term@1:X4 c0 +Debug: [elpi] lp2term: evar: calldepth:0 X4 c0 RAW: +ELAB: + +Debug: +[elpi] + lp2term@1:fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] +Debug: [elpi] lp2term@1:X5 c0 +Debug: [elpi] lp2term: evar: calldepth:0 X5 c0 RAW: +ELAB: + +Debug: +[elpi] + lp2term@2:fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] +Debug: [elpi] lp2term@2:X6 c0 c1 +Debug: [elpi] lp2term: evar: calldepth:0 X6 c0 c1 RAW: +ELAB: + +Debug: +[elpi] + lp2term@3:fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] +Debug: [elpi] lp2term@3:X7 c0 c1 c2 +Debug: [elpi] lp2term: evar: calldepth:0 X7 c0 c1 c2 RAW: +ELAB: + +Debug: +[elpi] + lp2term@4:match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]] +Debug: [elpi] lp2term@4:c3 +Debug: [elpi] lp2term@4:fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4] +Debug: [elpi] lp2term@4:X8 c0 c1 c2 c3 +Debug: [elpi] lp2term: evar: calldepth:0 X8 c0 c1 c2 c3 RAW: +ELAB: + +Debug: [elpi] lp2term@5:app [c1, c4] +Debug: [elpi] lp2term@5:c1 +Debug: [elpi] lp2term@5:c4 +Debug: +[elpi] + lp2term@4:fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5] +Debug: [elpi] lp2term@4:X9 c0 c1 c2 c3 +Debug: [elpi] lp2term: evar: calldepth:0 X9 c0 c1 c2 c3 RAW: +ELAB: + +Debug: [elpi] lp2term@5:fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5] +Debug: [elpi] lp2term@5:X10 c0 c1 c2 c3 c4 +Debug: [elpi] lp2term: evar: calldepth:0 X10 c0 c1 c2 c3 c4 RAW: +ELAB: + +Debug: [elpi] lp2term@6:app [c2, c4, c5] +Debug: [elpi] lp2term@6:c2 +Debug: [elpi] lp2term@6:c4 +Debug: [elpi] lp2term@6:c5 +Debug: +[elpi] + lp2term: out=(fun u : hole hole => + {| + val := oval u; + Sub := hole u hole; + Sub_rect := + fun (K : hole u hole) (K_S : hole K u hole) + (_elpi_renamed_u_3 : hole K_S K u hole) => + let + (x, Px) as u0 + return (hole u0 _elpi_renamed_u_3 K_S K hole) := + _elpi_renamed_u_3 in + K_S x Px + |}) + elpi2coq: + RAW: +ELAB: +SHELF: + + FUTURE GOALS STACK: + + +Debug: +[elpi] + detype: (fun u : hole hole => + {| + val := oval u; + Sub := hole u hole; + Sub_rect := + fun (K : hole u hole) (K_S : hole K u hole) + (_elpi_renamed_u_3 : hole K_S K u hole) => + let + (x, Px) as u0 + return (hole u0 _elpi_renamed_u_3 K_S K hole) := + _elpi_renamed_u_3 in + K_S x Px + |}) +Debug: [elpi] bringing updated sigma back to lp +Debug: +[elpi] + term2lp: depth=0 ctx= term=(forall u : nat, + is_SUB nat (fun x : nat => leq x u) (ord u)) +Debug: +[elpi] + term2lp (out): prod `u` (global (indt «nat»)) c0 \ + app + [global (indt «is_SUB»), global (indt «nat»), + fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], + app [global (indt «ord»), c0]] +Debug: +[elpi] + term2lp: depth=0 ctx= term=(fun u : nat => + {| + val := oval u; + Sub := Ord u; + Sub_rect := inlined_sub_rect + |}) +Debug: +[elpi] + term2lp (out): fun `u` (global (indt «nat»)) c0 \ + app + [global (indc «SubType»), global (indt «nat»), + fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], + app [global (indt «ord»), c0], app [global (const «oval»), c0], + app [global (indc «Ord»), c0], + fun `K` + (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) + c1 \ + fun `K_S` + (prod `x` (global (indt «nat»)) c2 \ + prod `Px` + (app + [global (indt «eq»), global (indt «bool»), + app + [fun `x` (global (indt «nat»)) c3 \ + app [global (const «leq»), c3, c0], c2], + global (indc «true»)]) c3 \ + app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ + fun `_elpi_renamed_u_3` (app [global (indt «ord»), c0]) c3 \ + match c3 + (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) + [fun `x` (global (indt «nat»)) c4 \ + fun `Px` + (app + [global (indt «eq»), global (indt «bool»), + app [global (const «leq»), c4, c0], global (indc «true»)]) + c5 \ app [c2, c4, c5]]] +Debug: +[elpi] + Elpi: query-compilation:0.0027 static-check:0.0000 optimization:0.0002 runtime:0.0064 (with success) + +Query assignments: + GR = indc «Ord» + K = global (indc «Ord») + T = fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] + T1 = fun `u` (global (indt «nat»)) c0 \ + app + [global (indc «SubType»), global (indt «nat»), + fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0], + app [global (indt «ord»), c0], app [global (const «oval»), c0], + app [global (indc «Ord»), c0], + fun `K` + (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) + c1 \ + fun `K_S` + (prod `x` (global (indt «nat»)) c2 \ + prod `Px` + (app + [global (indt «eq»), global (indt «bool»), + app + [fun `x` (global (indt «nat»)) c3 \ + app [global (const «leq»), c3, c0], c2], + global (indc «true»)]) c3 \ + app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ + fun `_elpi_renamed_u_3` (app [global (indt «ord»), c0]) c3 \ + match c3 + (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) + [fun `x` (global (indt «nat»)) c4 \ + fun `Px` + (app + [global (indt «eq»), global (indt «bool»), + app [global (const «leq»), c4, c0], global (indc «true»)]) + c5 \ app [c2, c4, c5]]] + X11_ = X0 + X12_ = X1 + X13_ = X2 + X14_ = X3 + X15_ = X4 + X16_ = X5 + X17_ = X6 + X18_ = X7 + X19_ = X8 + X20_ = X9 + X21_ = X10 + X22_ = global (indt «nat») + X23_ = c0 \ +global (indt «nat») + X24_ = c0 \ +fun `x` (global (indt «nat»)) c1 \ app [global (const «leq»), c1, c0] + X25_ = c0 \ +app [global (indt «ord»), c0] + X26_ = c0 \ +app [global (const «oval»), c0] + X27_ = c0 \ +fun `K` + (prod `x` (app [global (indt «ord»), c0]) c1 \ sort (typ «is_SUB.u2»)) + c1 \ + fun `K_S` + (prod `x` (global (indt «nat»)) c2 \ + prod `Px` + (app + [global (indt «eq»), global (indt «bool»), + app + [fun `x` (global (indt «nat»)) c3 \ + app [global (const «leq»), c3, c0], c2], global (indc «true»)]) + c3 \ app [c1, app [global (indc «Ord»), c0, c2, c3]]) c2 \ + fun `_elpi_renamed_u_3` (app [global (indt «ord»), c0]) c3 \ + match c3 (fun `xxx` (app [global (indt «ord»), c0]) c4 \ app [c1, c4]) + [fun `x` (global (indt «nat»)) c4 \ + fun `Px` + (app + [global (indt «eq»), global (indt «bool»), + app [global (const «leq»), c4, c0], global (indc «true»)]) c5 \ + app [c2, c4, c5]] +Universe constraints: +UNIVERSES: + {elpi_tests_stdlib.test_quotation.28 elpi_tests_stdlib.test_quotation.27} |= + Set <= is_SUB.u0 + Set <= is_SUB.u1 + Set <= elpi_tests_stdlib.test_quotation.27 + is_SUB.u2 <= elpi_tests_stdlib.test_quotation.28 +ALGEBRAIC UNIVERSES: + {elpi_tests_stdlib.test_quotation.28 elpi_tests_stdlib.test_quotation.27} +FLEXIBLE UNIVERSES: + elpi_tests_stdlib.test_quotation.28 + elpi_tests_stdlib.test_quotation.27 +SORTS: + α24 := Type + α25 := Type +WEAK CONSTRAINTS: + + +Debug: +[elpi] + gterm2lp: term=(fun u => + {| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |}) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term={| val := oval u; Sub := _; Sub_rect := inlined_sub_rect |} +Debug: [elpi] gterm2lp: term=SubType +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(oval u) +Debug: [elpi] gterm2lp: term=oval +Debug: [elpi] gterm2lp: term=u +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=inlined_sub_rect +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term=(fun K_S u => + let (x, Px) as u0 return (K u0) := u in K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term=(fun u => let (x, Px) as u0 return (K u0) := u in K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: +[elpi] + gterm2lp: term=(let (x, Px) as u0 return (K u0) := _elpi_renamed_u_3 in + K_S x Px) +Debug: [elpi] gterm2lp: term=_elpi_renamed_u_3 +Debug: [elpi] gterm2lp: term=(fun u0 => K u0) +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(K u0) +Debug: [elpi] gterm2lp: term=K +Debug: [elpi] gterm2lp: term=u0 +Debug: [elpi] gterm2lp: term=(fun x Px => K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(fun Px => K_S x Px) +Debug: [elpi] gterm2lp: term=_ +Debug: [elpi] gterm2lp: term=(K_S x Px) +Debug: [elpi] gterm2lp: term=K_S +Debug: [elpi] gterm2lp: term=x +Debug: [elpi] gterm2lp: term=Px +Debug: +[elpi] + elpi sigma -> coq sigma: before: +SHELF: +FUTURE GOALS STACK: + + +Rocq-Elpi mapping: +RAW: +ELAB: + +Debug: +[elpi] + elpi sigma -> coq sigma: synchronized: +SHELF: +FUTURE GOALS STACK: + + +Rocq-Elpi mapping: +RAW: +ELAB: + +Debug: +[elpi] + elpi sigma -> coq sigma: after: +SHELF: +FUTURE GOALS STACK: + + +Rocq-Elpi mapping: +RAW: +ELAB: + +Debug: +[elpi] + lp2term: depth=0 ctx=[] term=fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +Debug: +[elpi] + lp2term@0:fun `u` X0 c0 \ + app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +Debug: [elpi] lp2term@0:X0 +Debug: [elpi] lp2term: evar: calldepth:0 X0 RAW: +ELAB: + +Debug: [elpi] lp2term: evar: unknown: calldepth:0 X0 +Debug: [elpi] lp2term: evar: create_unknown: whole ctx: ; +Debug: [elpi] lp2term: evar: create_unknown: visible ctx: +Debug: [elpi] restrict_coq_context: named: +Debug: [elpi] lp2term: evar: create_unknown: restricted ctx: +Debug: +[elpi] + lp2term: evar: create_unknown: new link: ? |> |- ? = ?X41 + EVARS: + ?X41==[ |- Type] (internal placeholder) {?e} + +UNIVERSES: + {elpi_tests_stdlib.test_quotation.29} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α26 +WEAK CONSTRAINTS: + +SHELF: +FUTURE GOALS STACK: + ?X41 + +Debug: [elpi] lp2term@0:X0 +Debug: +[elpi] lp2term: evar: calldepth:0 X0 RAW: +?X41 <-> X0 +ELAB: +?X41 <-> X0 + +Debug: [elpi] lp2term: evar: already in Coq: ?X41 +Debug: +[elpi] + lp2term@1:app + [global (indc «SubType»), X1 c0, X2 c0, X3 c0, + app [global (const «oval»), c0], X4 c0, + fun `K` (X5 c0) c1 \ + fun `K_S` (X6 c0 c1) c2 \ + fun `_elpi_renamed_u_3` (X7 c0 c1 c2) c3 \ + match c3 (fun `u0` (X8 c0 c1 c2 c3) c4 \ app [c1, c4]) + [fun `x` (X9 c0 c1 c2 c3) c4 \ + fun `Px` (X10 c0 c1 c2 c3 c4) c5 \ app [c2, c4, c5]]] +Debug: [elpi] lp2term@1:global (indc «SubType») +Debug: [elpi] lp2term@1:X1 c0 +Debug: +[elpi] lp2term: evar: calldepth:0 X1 c0 RAW: +?X41 <-> X0 +ELAB: +?X41 <-> X0 + +Debug: [elpi] lp2term: evar: unknown: calldepth:0 X1 +Debug: [elpi] lp2term: evar: create_unknown: whole ctx: ; (u : ?e) +Debug: [elpi] lp2term: evar: create_unknown: visible ctx:c0 +Debug: [elpi] restrict_coq_context: named: +Debug: +[elpi] + restrict_coq_context: cur rel ctx: + restrict_coq_context: cur subst: + restrict_coq_context: looking at u(dbl 0) +Debug: [elpi] ?e--0->?e +Debug: [elpi] lp2term: evar: create_unknown: restricted ctx:(u : ?e) +Debug: [elpi] in_elpi_evar:?X42 +Debug: +[elpi] + lp2term: evar: create_unknown: new link: ? |> |- ? = ?X43 + EVARS: + ?X43==[u |- ?e0] (internal placeholder) {?e1} + ?X42==[u |- Type] (internal placeholder) {?e0} + ?X41==[ |- Type] (internal placeholder) {?e} + +UNIVERSES: + {elpi_tests_stdlib.test_quotation.30 elpi_tests_stdlib.test_quotation.29} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α26 + α27 +WEAK CONSTRAINTS: + +SHELF: +FUTURE GOALS STACK:?X43 ?X42 +?X41 + +Debug: [elpi] lp2term@1:X1 c0 +Debug: +[elpi] + lp2term: evar: calldepth:0 X1 c0 + RAW: +?X41 <-> X0 +?X42 <-> X12 +?X43 <-> X1 +ELAB: +?X41 <-> X0 +?X42 <-> X11 +?X43 <-> X1 + +Debug: [elpi] lp2term: evar: already in Coq: ?X43 +Debug: [elpi] lp2term@1:c0 +Debug: [elpi] lp2term@1:X2 c0 +Debug: +[elpi] + lp2term: evar: calldepth:0 X2 c0 + RAW: +?X41 <-> X0 +?X42 <-> X12 +?X43 <-> X1 +ELAB: +?X41 <-> X0 +?X42 <-> X11 +?X43 <-> X1 + +Debug: [elpi] lp2term: evar: unknown: calldepth:0 X2 +Debug: [elpi] lp2term: evar: create_unknown: whole ctx: ; (u : ?e) +Debug: [elpi] lp2term: evar: create_unknown: visible ctx:c0 +Debug: [elpi] restrict_coq_context: named: +Debug: +[elpi] + restrict_coq_context: cur rel ctx: + restrict_coq_context: cur subst: + restrict_coq_context: looking at u(dbl 0) +Debug: [elpi] ?e--0->?e +Debug: [elpi] lp2term: evar: create_unknown: restricted ctx:(u : ?e) +Debug: [elpi] in_elpi_evar:?X44 +Debug: +[elpi] + lp2term: evar: create_unknown: new link: ? |> |- ? = ?X45 + EVARS: + ?X45==[u |- ?e2] (internal placeholder) {?e3} + ?X44==[u |- Type] (internal placeholder) {?e2} + ?X43==[u |- ?e0] (internal placeholder) {?e1} + ?X42==[u |- Type] (internal placeholder) {?e0} + ?X41==[ |- Type] (internal placeholder) {?e} + +UNIVERSES: + {elpi_tests_stdlib.test_quotation.31 elpi_tests_stdlib.test_quotation.30 elpi_tests_stdlib.test_quotation.29} |= ALGEBRAIC UNIVERSES: {} @@ -6445,7 +7826,7 @@ (X10 c0 c1 c2 c3 c4) Debug: [elpi] - Elpi: query-compilation:0.0064 static-check:0.0000 optimization:0.0001 runtime:0.0692 (with error) + Elpi: query-compilation:0.0019 static-check:0.0000 optimization:0.0001 runtime:0.0236 (with error) hd : forall A : Type, A -> list A -> A @@ -6459,2807 +7840,6 @@ File "./tests-stdlib/test_quotation.v", line 47, characters 32-33 X is linear: name it _X (discard) or X_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -Debug: -----<<---- enter: -coq.say raw: - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -raw: -parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) 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 «elpi.tests.test_arg_HOAS.3»)) c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Debug: ----->>---- exit: -coq.say raw: - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app - [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) - Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app - [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) - Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -typed: -parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) 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 «elpi.tests.test_arg_HOAS.3»)) c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Debug: ----->>---- exit: -coq.say typed: - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -Debug: -----<<---- enter: -coq.env.add-indt - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.2»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.7»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - 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 «elpi.tests.test_arg_HOAS.3»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.4»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) - X0 -Debug: ----->>---- exit: -coq.env.add-indt - (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»)]]))]) - «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] -Debug: -----<<---- enter: -coq.say raw: - (parameter A1 maximal X0 c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ X1)) c2 \ - parameter B2 explicit (sort (typ X2)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ X4)) c3 \ - parameter B2 explicit (sort (typ X5)) c4 \ - arity - (prod `x` (X6 c4) 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 X7)) c3 \ - parameter B2 explicit (sort (typ X8)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -raw: -parameter A1 maximal X0 c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ X1)) c2 \ - parameter B2 explicit (sort (typ X2)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ X4)) c3 \ - parameter B2 explicit (sort (typ X5)) c4 \ - arity - (prod `x` (X6 c4) 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 X7)) c3 \ - parameter B2 explicit (sort (typ X8)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Debug: ----->>---- exit: -coq.say raw: - (parameter A1 maximal X0 c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ X1)) c2 \ - parameter B2 explicit (sort (typ X2)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ X4)) c3 \ - parameter B2 explicit (sort (typ X5)) c4 \ - arity - (prod `x` (X6 c4) 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 X7)) c3 \ - parameter B2 explicit (sort (typ X8)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -Debug: -----<<---- enter: -std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (parameter A1 maximal X0 c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ X1)) c2 \ - parameter B2 explicit (sort (typ X2)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ X3))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ X4)) c3 \ - parameter B2 explicit (sort (typ X5)) c4 \ - arity - (prod `x` (X6 c4) 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 X7)) c3 \ - parameter B2 explicit (sort (typ X8)) c4 \ - arity - (prod `_` c0 c5 \ - app - [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) - X9) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (parameter A1 maximal X0 c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.41»)) - c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.44»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.47»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.52»)) - c3 \ - parameter B2 explicit - (sort (typ «elpi.tests.test_arg_HOAS.54»)) c4 \ - arity - (prod `x` (X6 c4) 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 «elpi.tests.test_arg_HOAS.61»)) - c3 \ - parameter B2 explicit - (sort (typ «elpi.tests.test_arg_HOAS.63»)) c4 \ - arity - (prod `_` c0 c5 \ - app - [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) - c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) - c3 \ - parameter B2 explicit - (sort (typ «elpi.tests.test_arg_HOAS.55»)) 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 «elpi.tests.test_arg_HOAS.62»)) - c3 \ - parameter B2 explicit - (sort (typ «elpi.tests.test_arg_HOAS.64»)) c4 \ - arity - (prod `_` c0 c5 \ - app - [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))])) - Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) - 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 «elpi.tests.test_arg_HOAS.62»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -typed: -parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) - 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 «elpi.tests.test_arg_HOAS.62»)) c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Debug: ----->>---- exit: -coq.say typed: - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) - 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 «elpi.tests.test_arg_HOAS.62»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) -Debug: -----<<---- enter: -coq.env.add-indt - (parameter A1 maximal (sort (typ «elpi.tests.test_arg_HOAS.40»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.42»)) c2 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.45»)) - c3 \ - arity - (prod `_` (global (indt «nat»)) c4 \ - sort (typ «elpi.tests.test_arg_HOAS.48»))) c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «elpi.tests.test_arg_HOAS.53»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) - 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 «elpi.tests.test_arg_HOAS.62»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) - X10 -Debug: ----->>---- exit: -coq.env.add-indt - (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 «elpi.tests.test_arg_HOAS.53»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.55»)) - 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 «elpi.tests.test_arg_HOAS.62»)) - c3 \ - parameter B2 explicit (sort (typ «elpi.tests.test_arg_HOAS.64»)) - c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))]) - «foo1» -foo1 ?A2 ?B1 ?B2 ?n : Type - : Type -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?n : [ |- nat] -a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 - : foo1 ?A2 ?B1 ?B2 3 -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -Query assignments: - D = parameter A explicit (sort (typ «t.u0»)) c0 \ - inductive t tt - (parameter y explicit (global (indt «nat»)) c1 \ - arity (sort (typ «elpi.tests.test_arg_HOAS.82»))) c1 \ - [constructor K - (parameter y explicit (global (indt «nat»)) c2 \ - parameter x explicit c0 c3 \ - parameter n maximal (global (indt «nat»)) c4 \ - arity (prod `_` (app [c1, c4]) c5 \ app [c1, c2]))] - I = «t» -Universe constraints: -UNIVERSES: - {elpi.tests.test_arg_HOAS.82} |= - Set <= elpi.tests.test_arg_HOAS.82 - t.u0 <= elpi.tests.test_arg_HOAS.82 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -Debug: -----<<---- enter: -coq.say raw: - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) -raw: -record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record) -Debug: ----->>---- exit: -coq.say raw: - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ - end-record))) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ - end-record))) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) -typed: -record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record) -Debug: ----->>---- exit: -coq.say typed: - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) -Debug: -----<<---- enter: -coq.env.add-indt - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) - X0 -Debug: ----->>---- exit: -coq.env.add-indt - (record foo (sort (typ «Set»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) - «foo» -Debug: -----<<---- enter: -coq.say raw: - (record foo (sort (typ X0)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], - global (indc «O»)]) c1 \ end-record)) -raw: -record foo (sort (typ X0)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], - global (indc «O»)]) c1 \ end-record) -Debug: ----->>---- exit: -coq.say raw: - (record foo (sort (typ X0)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], - global (indc «O»)]) c1 \ end-record)) -Debug: -----<<---- enter: -std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (record foo (sort (typ X0)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], - global (indc «O»)]) c1 \ end-record)) X2) - Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (record foo (sort (typ «elpi.tests.test_arg_HOAS.85»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), X1 c0, app [c0, global (indc «O»)], - global (indc «O»)]) c1 \ end-record)) - (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ - end-record))) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) -typed: -record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record) -Debug: ----->>---- exit: -coq.say typed: - (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) -Debug: -----<<---- enter: -coq.env.add-indt - (record foo (sort (typ «elpi.tests.test_arg_HOAS.86»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) - X3 -Debug: ----->>---- exit: -coq.env.add-indt - (record foo (sort (typ «foo.u0»)) Build_foo - (field [coercion off, canonical tt] f - (prod `_` (global (indt «nat»)) c0 \ global (indt «nat»)) c0 \ - field [coercion off, canonical tt] _ - (app - [global (indt «eq»), global (indt «nat»), - app [c0, global (indc «O»)], global (indc «O»)]) c1 \ end-record)) - «foo» -Debug: -----<<---- enter: -coq.say raw: - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record)) -raw: -parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record) -Debug: ----->>---- exit: -coq.say raw: - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record)) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record))) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record))) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record)) -typed: -parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record) -Debug: ----->>---- exit: -coq.say typed: - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record)) -Debug: -----<<---- enter: -coq.env.add-indt - (parameter A explicit (sort (typ «elpi.tests.test_arg_HOAS.88»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.88»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record)) X0 -Debug: ----->>---- exit: -coq.env.add-indt - (parameter A explicit (sort (typ «foo.u0»)) c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «foo.u0»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `a` c0 c3 \ - prod `_` (app [global (indt «eq»), c0, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (global (indt «nat»)) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` c0 c5 \ - app [global (indt «eq»), c0, app [c2, c5, c5], c5]) c4 \ - end-record)) «foo» -Query assignments: - I = «foo» -Debug: -----<<---- enter: -coq.say raw: - (parameter A explicit X0 c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ X1)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `_elpi_renamed_a_1` c0 c3 \ - prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) - c3 \ - field [coercion off, canonical ff] x - (let `w` (X3 c3) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` (X4 c3 c4) c5 \ - app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) - c4 \ end-record)) -raw: -parameter A explicit X0 c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ X1)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `_elpi_renamed_a_1` c0 c3 \ - prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) c3 \ - field [coercion off, canonical ff] x - (let `w` (X3 c3) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` (X4 c3 c4) c5 \ - app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) c4 \ - end-record) -Debug: ----->>---- exit: -coq.say raw: - (parameter A explicit X0 c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ X1)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `_elpi_renamed_a_1` c0 c3 \ - prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) - c3 \ - field [coercion off, canonical ff] x - (let `w` (X3 c3) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` (X4 c3 c4) c5 \ - app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) - c4 \ end-record)) -Debug: -----<<---- enter: -std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (parameter A explicit X0 c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ X1)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `_elpi_renamed_a_1` c0 c3 \ - prod `_` (app [global (indt «eq»), X2 c2 c3, c1, c1]) c4 \ c0) - c3 \ - field [coercion off, canonical ff] x - (let `w` (X3 c3) - (app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]) c4 \ - prod `x` (X4 c3 c4) c5 \ - app [global (indt «eq»), X5 c3 c4 c5, app [c2, c5, c5], c5]) - c4 \ end-record)) X6) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (parameter A explicit X0 c0 \ - parameter B explicit c0 c1 \ - record foo (sort (typ «elpi.tests.test_arg_HOAS.95»)) Build_foo - (field [coercion off, canonical tt] a - (prod `_` c0 c2 \ prod `_` c0 c3 \ c0) c2 \ - field [coercion reversible, canonical tt] z - (prod `_elpi_renamed_a_1` c0 c3 \ -...TRUNCATED BY DUNE... - app - [global (const «Nat.add»), c2, - app [global (indc «S»), global (indc «O»)]]) - (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ - prod `w` c0 c1 \ prod `n` (global (indt «nat»)) c2 \ X5 c0 c1 c2) X7) - illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.elaborate-skeleton - (fun `P` (sort (typ «elpi.tests.test_arg_HOAS.109»)) c0 \ - fun `w` c0 c1 \ - fun `n` (global (indt «nat»)) c2 \ - app - [global (const «Nat.add»), c2, - app [global (indc «S»), global (indc «O»)]]) - (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ - prod `w` c0 c1 \ - prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) - (fun `P` (sort (typ «elpi.tests.test_arg_HOAS.110»)) c0 \ - fun `w` c0 c1 \ - fun `n` (global (indt «nat»)) c2 \ - app - [global (const «Nat.add»), c2, - app [global (indc «S»), global (indc «O»)]])) - illtyped definition -Debug: -----<<---- enter: -coq.env.add-const x1 - (fun `P` (sort (typ «elpi.tests.test_arg_HOAS.110»)) c0 \ - fun `w` c0 c1 \ - fun `n` (global (indt «nat»)) c2 \ - app - [global (const «Nat.add»), c2, - app [global (indc «S»), global (indc «O»)]]) - (prod `P` (sort (typ «elpi.tests.test_arg_HOAS.106»)) c0 \ - prod `w` c0 c1 \ - prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X8 X9 -Debug: ----->>---- exit: -coq.env.add-const x1 - (fun `P` (sort (typ «x1.u1»)) c0 \ - fun `w` c0 c1 \ - fun `n` (global (indt «nat»)) c2 \ - app - [global (const «Nat.add»), c2, - app [global (indc «S»), global (indc «O»)]]) - (prod `P` (sort (typ «x1.u0»)) c0 \ - prod `w` c0 c1 \ - prod `n` (global (indt «nat»)) c2 \ global (indt «nat»)) X8 «x1» -x1 : forall P : Type, P -> nat -> nat - : forall P : Type, P -> nat -> nat -eq_refl : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) - : x1 = (fun (P : Type) (_ : P) (n : nat) => n + 1) -Debug: -----<<---- enter: -coq.arity->term - (parameter n explicit (global (indt «nat»)) c0 \ - arity (sort (typ «elpi.tests.test_arg_HOAS.113»))) X0 -Debug: ----->>---- exit: -coq.arity->term - (parameter n explicit (global (indt «nat»)) c0 \ - arity (sort (typ «elpi.tests.test_arg_HOAS.113»))) - (prod `n` (global (indt «nat»)) c0 \ - sort (typ «elpi.tests.test_arg_HOAS.113»)) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-ty - (prod `n` (global (indt «nat»)) c0 \ - sort (typ «elpi.tests.test_arg_HOAS.113»)) X1) illtyped axiom -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-ty - (prod `n` (global (indt «nat»)) c0 \ - sort (typ «elpi.tests.test_arg_HOAS.113»)) - (typ «elpi.tests.test_arg_HOAS.114»)) illtyped axiom -Debug: -----<<---- enter: -coq.env.add-axiom y - (prod `n` (global (indt «nat»)) c0 \ - sort (typ «elpi.tests.test_arg_HOAS.113»)) X2 -Debug: ----->>---- exit: -coq.env.add-axiom y - (prod `n` (global (indt «nat»)) c0 \ sort (typ «y.u0»)) «y» -y : nat -> Type - : nat -> Type -Debug: -----<<---- enter: -coq.arity->term - (parameter n explicit (global (indt «nat»)) c0 \ - arity (global (indt «nat»))) X0 -Debug: ----->>---- exit: -coq.arity->term - (parameter n explicit (global (indt «nat»)) c0 \ - arity (global (indt «nat»))) - (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck - (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) - (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»))) - illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck - (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) - (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»))) - illtyped definition -Debug: -----<<---- enter: -coq.env.add-const x - (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) - (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) X1 X2 -Debug: ----->>---- exit: -coq.env.add-const x - (fun `n` (global (indt «nat»)) c0 \ app [global (indc «S»), c0]) - (prod `n` (global (indt «nat»)) c0 \ global (indt «nat»)) X1 «x» -parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) - c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `x` (global (indt «nat»)) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c4, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]]) c6 \ - app [c2, c3, c4, c5])), - constructor a_k2 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] -Query assignments: - D = parameter A1 maximal (sort (typ «foo1.u0»)) c0 \ - parameter A2 explicit c0 c1 \ - inductive foo1 tt - (parameter B1 explicit (sort (typ «foo1.u1»)) c2 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c3 \ - arity (prod `_` (global (indt «nat»)) c4 \ sort (typ «foo1.u3»))) - c2 \ - [constructor a_k1 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `x` (global (indt «nat»)) c5 \ - prod `_` - (app - [c2, app [global (indt «prod»), c3, c3], c4, - app - [global (indc «S»), - app - [global (indc «S»), - app [global (indc «S»), global (indc «O»)]]]]) c6 \ - app [c2, c3, c4, c5])), - constructor a_k2 - (parameter B1 explicit (sort (typ «foo1.u1»)) c3 \ - parameter B2 explicit (sort (typ «foo1.u2»)) c4 \ - arity - (prod `_` c0 c5 \ - app [c2, c3, c4, app [global (indc «S»), global (indc «O»)]]))] - I = «inductive_nup.foo1» -foo1 ?A2 ?B1 ?B2 ?n : Type - : Type -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?n : [ |- nat] -a_k1 ?A2 ?B1 ?B2 3 ?f : foo1 ?A2 ?B1 ?B2 3 - : foo1 ?A2 ?B1 ?B2 3 -where -?A1 : [ |- Type] -?A2 : [ |- ?A1] -?B1 : [ |- Type] -?B2 : [ |- Type] -?f : [ |- foo1 ?A2 (?B1 * ?B1) ?B2 3] -Query assignments: - I = «inductive_nup.r» - R = parameter A explicit (sort (typ «r.u0»)) c0 \ - parameter a explicit c0 c1 \ - record r (sort (typ «r.u0»)) R - (field [coercion reversible, canonical tt] f (prod `_` c0 c2 \ c0) c2 \ - field [coercion off, canonical tt] g c0 c3 \ - field [coercion off, canonical tt] p - (app [global (indt «eq»), c0, c1, c3]) c4 \ end-record) -Record r (A : Type) (a : A) : Type := R { f : A -> A; g : A; p : a = g }. - -Arguments r A%type_scope a -Arguments R A%type_scope a f%function_scope g p -Arguments f A%type_scope a record _ -Arguments g A%type_scope a record -Arguments p A%type_scope a record -Debug: -----<<---- enter: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) -raw: inductive X1 tt (arity (sort prop)) c0 \ [] -Debug: ----->>---- exit: coq.say raw: (inductive X1 tt (arity (sort prop)) c0 \ []) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) - Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl (inductive X1 tt (arity (sort prop)) c0 \ [])) - Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) -typed: inductive X1 tt (arity (sort prop)) c0 \ [] -Debug: ----->>---- exit: -coq.say typed: (inductive X1 tt (arity (sort prop)) c0 \ []) -Debug: -----<<---- enter: -coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) X0 -Debug: ----->>---- exit: -coq.env.add-indt (inductive X1 tt (arity (sort prop)) c0 \ []) «X1» -X1 : Prop - -X1 is not universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X1 -Debug: -----<<---- enter: -coq.say raw: - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ - []) (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) -raw: -inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ [] -upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt -Debug: ----->>---- exit: -coq.say raw: - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ - []) (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) -Debug: ----<<---- enter: coq.univ.print -Universe constraints: UNIVERSES: - {eu1} |= - ALGEBRAIC UNIVERSES: - {} - FLEXIBLE UNIVERSES: - eu1 - SORTS: - - WEAK CONSTRAINTS: - - -Debug: ---->>---- exit: coq.univ.print -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) - c0 \ [])) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) - c0 \ [])) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ - []) -typed: -inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ [] -Debug: ----->>---- exit: -coq.say typed: - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ - []) -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) X0 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) - => - coq.env.add-indt - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ - []) X1 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.129»] tt [] tt) - => - coq.env.add-indt - (inductive X3 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.129»))) c0 \ - []) «X3» -Debug: -----<<---- enter: -coq.say raw: - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ - []) (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) -raw: -inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ [] -upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt -Debug: ----->>---- exit: -coq.say raw: - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ - []) (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) -Debug: ----<<---- enter: coq.univ.print -Universe constraints: UNIVERSES: - {eu2} |= - ALGEBRAIC UNIVERSES: - {} - FLEXIBLE UNIVERSES: - eu2 - SORTS: - - WEAK CONSTRAINTS: - - -Debug: ---->>---- exit: coq.univ.print -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) - c0 \ [])) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) - c0 \ [])) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ - []) -typed: -inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ [] -Debug: ----->>---- exit: -coq.say typed: - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ - []) -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) X0 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) - (get-option coq:udecl-cumul - (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl-cumul - (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) => - coq.env.add-indt - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ - []) X1 -Debug: ----->>---- exit: -get-option coq:udecl-cumul - (upoly-decl-cumul [auto «elpi.tests.test_arg_HOAS.137»] tt [] tt) => - coq.env.add-indt - (inductive X4 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.137»))) c0 \ - []) «X4» -X3@{eu1} : Type@{eu1} -(* eu1 |= *) - -X3 is universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X3 -X4@{eu2} : Type@{eu2} -(* *eu2 |= *) - -X4 is universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X4 -Query assignments: - GR = indt «X3» -Universe constraints: -UNIVERSES: - {elpi.tests.test_arg_HOAS.145} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_arg_HOAS.145 -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - GR = indt «X4» -Universe constraints: -UNIVERSES: - {elpi.tests.test_arg_HOAS.146} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_arg_HOAS.146 -SORTS: - -WEAK CONSTRAINTS: - - -Debug: -----<<---- enter: -coq.say raw: - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ - []) (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) -raw: -inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ [] -upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff -Debug: ----->>---- exit: -coq.say raw: - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ - []) (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) -Debug: ----<<---- enter: coq.univ.print -Universe constraints: UNIVERSES: - {eu3} |= - ALGEBRAIC UNIVERSES: - {} - FLEXIBLE UNIVERSES: - eu3 - SORTS: - - WEAK CONSTRAINTS: - - -Debug: ---->>---- exit: coq.univ.print -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) - c0 \ [])) Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) - c0 \ [])) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ - []) -typed: -inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ [] -Debug: ----->>---- exit: -coq.say typed: - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ - []) -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) X0 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) - => - coq.env.add-indt - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ - []) X1 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.147»] ff [] ff) - => - coq.env.add-indt - (inductive X5 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.147»))) c0 \ - []) «X5» -X5@{eu3} : Type@{eu3} -(* eu3 |= *) - -X5 is universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X5 -Debug: -----<<---- enter: -coq.say raw: - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) -raw: -inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))] -upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff -Debug: ----->>---- exit: -coq.say raw: - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) -Debug: ----<<---- enter: coq.univ.print -Universe constraints: UNIVERSES: - {eu5 eu4} |= eu4 < eu5 - ALGEBRAIC UNIVERSES: - {} - FLEXIBLE UNIVERSES: - eu5 - eu4 - SORTS: - - WEAK CONSTRAINTS: - - -Debug: ---->>---- exit: coq.univ.print -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) - c0 \ - [constructor K - (arity - (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))])) - Illtyped inductive declaration -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck-indt-decl - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) - c0 \ - [constructor K - (arity - (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))])) - Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) -typed: -inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))] -Debug: ----->>---- exit: -coq.say typed: - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) - X0 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) - (get-option coq:udecl - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] - ff)) -Debug: -----<<---- enter: -get-option coq:udecl - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) - => - coq.env.add-indt - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) - X1 -Debug: ----->>---- exit: -get-option coq:udecl - (upoly-decl - [«elpi.tests.test_arg_HOAS.155», «elpi.tests.test_arg_HOAS.156»] ff - [lt «elpi.tests.test_arg_HOAS.155» «elpi.tests.test_arg_HOAS.156»] ff) - => - coq.env.add-indt - (inductive X6 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.156»))) c0 \ - [constructor K - (arity (prod `u` (sort (typ «elpi.tests.test_arg_HOAS.155»)) c1 \ c0))]) - «X6» -X6@{eu4 eu5} : Type@{eu5} -(* eu4 eu5 |= eu4 < eu5 *) - -X6 is universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X6 -Debug: -----<<---- enter: -coq.say raw: (inductive X8 tt (arity (sort (typ X0))) c0 \ []) - (upoly-decl [] tt [] tt) -raw: inductive X8 tt (arity (sort (typ X0))) c0 \ [] upoly-decl [] tt [] tt -Debug: ----->>---- exit: -coq.say raw: (inductive X8 tt (arity (sort (typ X0))) c0 \ []) - (upoly-decl [] tt [] tt) -Debug: ----<<---- enter: coq.univ.print -Universe constraints: -Debug: ---->>---- exit: coq.univ.print -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (inductive X8 tt (arity (sort (typ X0))) c0 \ []) X1) - Illtyped inductive declaration -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-indt-decl-skeleton - (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) - c0 \ []) - (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) - c0 \ [])) Illtyped inductive declaration -Debug: -----<<---- enter: -coq.say typed: - (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ - []) -typed: -inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ [] -Debug: ----->>---- exit: -coq.say typed: - (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ - []) -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X2 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [] tt [] tt) => - coq.env.add-indt - (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ - []) X3 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [] tt [] tt) => - coq.env.add-indt - (inductive X8 tt (arity (sort (typ «elpi.tests.test_arg_HOAS.171»))) c0 \ - []) «X8» -X8@{u} : Type@{u} -(* u |= *) - -X8 is universe polymorphic -Expands to: Inductive elpi.tests.test_arg_HOAS.X8 -Debug: -----<<---- enter: -coq.arity->term - (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - parameter x explicit c0 c1 \ arity c0) X0 -Debug: ----->>---- exit: -coq.arity->term - (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - parameter x explicit c0 c1 \ arity c0) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - prod `x` c0 c1 \ c0) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - prod `x` c0 c1 \ c0)) illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - prod `x` c0 c1 \ c0)) illtyped definition -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [] tt [] tt) => - coq.env.add-const f1 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - prod `x` c0 c1 \ c0) X2 X3 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [] tt [] tt) => - coq.env.add-const f1 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.179»)) c0 \ - prod `x` c0 c1 \ c0) X2 «f1» -f1@{u} : forall T : Type@{u}, T -> T -(* u |= *) - -f1 is universe polymorphic -Arguments f1 T%type_scope x -f1 is transparent -Expands to: Constant elpi.tests.test_arg_HOAS.f1 -Debug: -----<<---- enter: -coq.arity->term - (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - parameter x explicit c0 c2 \ arity c0) X0 -Debug: ----->>---- exit: -coq.arity->term - (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - parameter x explicit c0 c2 \ arity c0) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - prod `x` c0 c2 \ c0) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - prod `x` c0 c2 \ c0)) illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - prod `x` c0 c2 \ c0)) illtyped definition -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) X1 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) - => - coq.env.add-const f2 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - prod `x` c0 c2 \ c0) X2 X3 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.180»] ff [] tt) - => - coq.env.add-const f2 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.180»)) c1 \ - prod `x` c0 c2 \ c0) X2 «f2» -f2@{u} : forall T : Type@{u}, Type@{u} -> T -> T -(* u |= *) - -f2 is universe polymorphic -Arguments f2 (T T1)%type_scope x -f2 is transparent -Expands to: Constant elpi.tests.test_arg_HOAS.f2 -Debug: -----<<---- enter: -coq.arity->term - (parameter T explicit (sort (typ X0)) c0 \ - parameter x explicit c0 c1 \ arity (X1 c1)) X2 -Debug: ----->>---- exit: -coq.arity->term - (parameter T explicit (sort (typ X0)) c0 \ - parameter x explicit c0 c1 \ arity (X1 c1)) - (prod `T` (sort (typ X0)) c0 \ prod `x` c0 c1 \ X1 c1) -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton - (prod `T` (sort (typ X0)) c0 \ prod `x` c0 c1 \ X1 c1) X3 X4) - illtyped arity -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - prod `x` c0 c1 \ X1 c1) (typ «elpi.tests.test_arg_HOAS.183») - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - prod `x` c0 c1 \ X5 c0 c1)) illtyped arity -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton (fun `T` (sort (typ X6)) c0 \ fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - prod `x` c0 c1 \ X5 c0 c1) X7) illtyped definition -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.184»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - prod `x` c0 c1 \ c0) - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - fun `x` c0 c1 \ c1)) illtyped definition -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X8 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [] tt [] tt) => - coq.env.add-const f3 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - prod `x` c0 c1 \ c0) X9 X10 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [] tt [] tt) => - coq.env.add-const f3 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - fun `x` c0 c1 \ c1) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.181»)) c0 \ - prod `x` c0 c1 \ c0) X9 «f3» -f3@{u} : forall T : Type@{u}, T -> T -(* u |= *) - -f3 is universe polymorphic -Arguments f3 T%type_scope x -f3 is transparent -Expands to: Constant elpi.tests.test_arg_HOAS.f3 -Debug: -----<<---- enter: -coq.arity->term - (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - parameter x explicit c0 c2 \ arity (X0 c2)) X1 -Debug: ----->>---- exit: -coq.arity->term - (parameter T explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - parameter x explicit c0 c2 \ arity (X0 c2)) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ X0 c2) -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ X0 c2) X2 X3) illtyped arity -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ X0 c2) (typ «elpi.tests.test_arg_HOAS.187») - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ X4 c0 c1 c2)) illtyped arity -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ X4 c0 c1 c2) X5) illtyped definition -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ c0) - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - fun `x` c0 c2 \ c2)) illtyped definition -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) X6 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) - => - coq.env.add-const f4 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ c0) X7 X8 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.185»] ff [] tt) - => - coq.env.add-const f4 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.185»)) c1 \ - prod `x` c0 c2 \ c0) X7 «f4» -f4@{u} : forall T : Type@{u}, Type@{u} -> T -> T -(* u |= *) - -f4 is universe polymorphic -Arguments f4 (T T1)%type_scope x -f4 is transparent -Expands to: Constant elpi.tests.test_arg_HOAS.f4 -Debug: -----<<---- 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 c2)) X1 -Debug: ----->>---- exit: -coq.arity->term - (parameter T explicit (sort (typ «uuu»)) c0 \ - parameter T1 explicit (sort (typ «uuu»)) c1 \ - parameter x explicit c0 c2 \ arity (X0 c2)) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ X0 c2) -Debug: -----<<---- enter: -std.assert-ok! - (coq.elaborate-ty-skeleton - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ X0 c2) X2 X3) - illtyped arity -Debug: ----->>---- exit: -std.assert-ok! - (coq.elaborate-ty-skeleton - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ X0 c2) - (typ «elpi.tests.test_arg_HOAS.192») - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ - prod `x` c0 c2 \ X4 c0 c1 c2)) illtyped arity -Debug: -----<<---- enter: -std.assert-ok! - (coq.elaborate-skeleton - (fun `T` (sort (typ «uuu»)) c0 \ - fun `T1` (sort (typ «uuu»)) c1 \ fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ - prod `x` c0 c2 \ X4 c0 c1 c2) X5) illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.elaborate-skeleton - (fun `T` (sort (typ «uuu»)) c0 \ - fun `T1` (sort (typ «uuu»)) c1 \ fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ - prod `x` c0 c2 \ c0) - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.193»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.194»)) c1 \ - fun `x` c0 c2 \ c2)) illtyped definition -Debug: -----<<---- enter: -coq.env.add-const f5 - (fun `T` (sort (typ «elpi.tests.test_arg_HOAS.193»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.194»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «elpi.tests.test_arg_HOAS.189»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.190»)) c1 \ - prod `x` c0 c2 \ c0) X6 X7 -Debug: ----->>---- exit: -coq.env.add-const f5 - (fun `T` (sort (typ «f5.u2»)) c0 \ - 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) X6 «f5» -Debug: -----<<---- enter: -coq.arity->term - (parameter T explicit (sort (typ «uuu»)) c0 \ - parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - parameter x explicit c0 c2 \ arity c0) X0 -Debug: ----->>---- exit: -coq.arity->term - (parameter T explicit (sort (typ «uuu»)) c0 \ - parameter T1 explicit (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - parameter x explicit c0 c2 \ arity c0) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - prod `x` c0 c2 \ c0) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck - (fun `T` (sort (typ «uuu»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - prod `x` c0 c2 \ c0)) illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck - (fun `T` (sort (typ «uuu»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - prod `x` c0 c2 \ c0)) illtyped definition -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) X1 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) - => - coq.env.add-const f6 - (fun `T` (sort (typ «uuu»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - prod `x` c0 c2 \ c0) X2 X3 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.195»] ff [] tt) - => - coq.env.add-const f6 - (fun `T` (sort (typ «uuu»)) c0 \ - fun `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - fun `x` c0 c2 \ c2) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.195»)) c1 \ - prod `x` c0 c2 \ c0) X2 «f6» -f6@{uuux} : forall T : Type@{uuu}, Type@{uuux} -> T -> T -(* uuux |= *) - -f6 is universe polymorphic -Arguments f6 (T T1)%type_scope x -f6 is transparent -Expands to: Constant elpi.tests.test_arg_HOAS.f6 -Debug: -----<<---- enter: -coq.arity->term - (arity - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) X0 -Debug: ----->>---- exit: -coq.arity->term - (arity - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck (pglobal (const «f6») «Set») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) - illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck (pglobal (const «f6») «Set») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0)) - illtyped definition -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [] tt [] tt) => - 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 X3 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [] tt [] tt) => - 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» -Debug: ----<<---- enter: coq.arity->term (arity X0) X1 -Debug: ---->>---- exit: coq.arity->term (arity X1) X1 -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! (coq.elaborate-ty-skeleton X1 X2 X3) illtyped arity -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton X1 (typ «elpi.tests.test_arg_HOAS.196») (X4)) - illtyped arity -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton (pglobal (const «f6») «Set») (X4) X5) - illtyped definition -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton (pglobal (const «f6») «Set») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «Set»)) c1 \ prod `x` c0 c2 \ c0) - (pglobal (const «f6») «Set»)) illtyped definition -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X6 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- 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 -Debug: ----->>---- exit: -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 «f8» -Debug: -----<<---- enter: -coq.arity->term - (arity - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) X0 -Debug: ----->>---- exit: -coq.arity->term - (arity - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck (pglobal (const «f6») «uuu») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) - illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck (pglobal (const «f6») «uuu») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0)) - illtyped definition -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X1 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- enter: -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 X3 -Debug: ----->>---- 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'» -Debug: ----<<---- enter: coq.arity->term (arity X0) X1 -Debug: ---->>---- exit: coq.arity->term (arity X1) X1 -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! (coq.elaborate-ty-skeleton X1 X2 X3) illtyped arity -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton X1 (typ «elpi.tests.test_arg_HOAS.197») (X4)) - illtyped arity -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton (pglobal (const «f6») «uuu») (X4) X5) - illtyped definition -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton (pglobal (const «f6») «uuu») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «uuu»)) c1 \ prod `x` c0 c2 \ c0) - (pglobal (const «f6») «uuu»)) illtyped definition -Debug: -----<<---- enter: coq.upoly-decl->attribute (upoly-decl [] tt [] tt) X6 -Debug: ----->>---- exit: -coq.upoly-decl->attribute (upoly-decl [] tt [] tt) - (get-option coq:udecl (upoly-decl [] tt [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [] tt [] tt) => - 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 X8 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [] tt [] tt) => - 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: -----<<---- enter: -coq.arity->term - (arity - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0)) X0 -Debug: ----->>---- exit: -coq.arity->term - (arity - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0)) - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0) -Debug: -----<<---- enter: -std.assert-ok! - (coq.typecheck (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0)) illtyped definition -Debug: ----->>---- exit: -std.assert-ok! - (coq.typecheck (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0)) illtyped definition -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) X1 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) - => - coq.env.add-const f7'' - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0) X2 X3 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.198»] ff [] tt) - => - coq.env.add-const f7'' - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.198») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.198»)) c1 \ - prod `x` c0 c2 \ c0) X2 «f7''» -Debug: ----<<---- enter: coq.arity->term (arity X0) X1 -Debug: ---->>---- exit: coq.arity->term (arity X1) X1 -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! (coq.elaborate-ty-skeleton X1 X2 X3) illtyped arity -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-ty-skeleton X1 (typ «elpi.tests.test_arg_HOAS.200») (X4)) - illtyped arity -Debug: -----<<---- enter: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») (X4) X5) - illtyped definition -Debug: ----->>---- exit: -get-option coq:keepunivs tt => - std.assert-ok! - (coq.elaborate-skeleton - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.199»)) c1 \ - prod `x` c0 c2 \ c0) - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199»)) - illtyped definition -Debug: -----<<---- enter: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) X6 -Debug: ----->>---- exit: -coq.upoly-decl->attribute - (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) - (get-option coq:udecl - (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt)) -Debug: -----<<---- enter: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) - => - coq.env.add-const f8'' - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.199»)) c1 \ - prod `x` c0 c2 \ c0) X7 X8 -Debug: ----->>---- exit: -get-option coq:udecl (upoly-decl [«elpi.tests.test_arg_HOAS.199»] ff [] tt) - => - coq.env.add-const f8'' - (pglobal (const «f6») «elpi.tests.test_arg_HOAS.199») - (prod `T` (sort (typ «uuu»)) c0 \ - prod `T1` (sort (typ «elpi.tests.test_arg_HOAS.199»)) c1 \ - prod `x` c0 c2 \ c0) X7 «f8''» -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)) -2 -fun `x` X0 c0 \ fun `y` (X1 c0) c1 \ app [global (const «Nat.add»), c0, c1] -File "./tests/test_arg_HOAS.v", line 283, characters 0-68: -Warning: Automatically putting X1 in Prop even though it was declared with -Type. -Unset Automatic Proposition Inductives to prevent this (it will become the -default in a future version). -If you instead put X1 explicitly in Prop, set Dependent Proposition -Eliminators around the declaration for full backwards compatibility. -[automatic-prop-lowering,deprecated-since-8.20,deprecated,default] -File "./apps/eltac/theories/apply.v", line 15, characters 16-19: -Warning: -File "./apps/eltac/theories/apply.v", line 15, characters 16-19 -Ctx is linear: name it _Ctx (discard) or Ctx_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -z - : nat -it = elpi_subproof - : True -it : True - -it is not universe polymorphic -it is transparent -Expands to: Constant elpi.tests.test_ltac.it -elpi_subproof = I - : True -elpi_subproof : True - -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context -app - [global (indt «eq»), global (indt «nat»), - app - [global (const «map»), - fun `x` (global (indt «nat»)) c1 \ - app - [global (const «Nat.add»), c1, - app [global (indc «S»), global (indc «O»)]]], c0] -app - [global (indt «eq»), global (indt «nat»), - app - [global (const «map»), - fun `x` (global (indt «nat»)) c1 \ - app - [global (const «Nat.add»), c1, - app [global (indc «S»), global (indc «O»)]]], c0] -app - [global (indt «eq»), global (indt «nat»), - app - [global (const «map»), - fun `x0` (global (indt «nat»)) c1 \ - app - [global (const «Nat.add»), c1, - app [global (indc «S»), global (indc «O»)]]], c0] Query assignments: P = /build/reproducible-path/coq-elpi-2.5.0/_build/default/elpi/elpi_elaborator.elpi File "./tests/test_query_extra_dep.v", line 7, characters 44-45: @@ -9267,58 +7847,58 @@ File "./tests/test_query_extra_dep.v", line 7, characters 44-45 P is linear: name it _P (discard) or P_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -test2 -test1 -str hello -test1 -too many arguments -test1 -str hello my -str Dear -test1 -too many arguments -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 47, column 5, characters 953-961:), - attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar)] -[get-option elpi.loc - File "./tests/test_vernacular1.v", line 47, column 5, characters 953-961:, - get-option elpi.phase interp, get-option foo bar] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 51, column 0, characters 987-1014:), - 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 51, column 0, characters 987-1014:, - get-option elpi.phase interp, get-option foo bar, get-option poly tt] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular1.v", line 52, column 0, characters 1015-1055:), - 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 52, column 0, characters 1015-1055:, - get-option elpi.phase interp, get-option foo bar, get-option poly tt] -Query assignments: - X = 3 -app [global (const «Nat.mul»), X0, X1] type -File "./tests/test_vernacular1.v", line 5, characters 0-61: -Warning: -Undeclared globals: -- File "./tests/test_vernacular1.v", line 6, column 29, characters 112-117: foo. -Please add the following text to your program: -type foo list argument -> prop. -[elpi.missing-types,elpi.typecheck,elpi,default] -File "./tests/test_vernacular1.v", line 46, characters 2-11: -Warning: This command does not support this attribute: foo. -[unsupported-attributes,parsing,default] -File "./tests/test_vernacular1.v", line 65, characters 26-27: -Warning: -File "./tests/test_vernacular1.v", line 65, characters 26-27 -X is linear: name it _X (discard) or X_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] +goal X0 c0 c1 c2 c3 is + +[decl c3 `H` (app [global (const «lt»), c0, c1]), + decl c2 `z` (global (indt «nat»)), decl c1 `y` (global (indt «nat»)), + decl c0 `x` (global (indt «nat»))] +------- + +prod `_` (app [global (const «lt»), c1, c2]) c4 \ + app [global (const «lt»), c0, c2] +3 +The Db contains [phone_prefix USA 1] +Phone prefix for USA is 1 +The Db contains +[phone_prefix USA 1, phone_prefix France 33, phone_prefix Italy 39] +Phone prefix for France is 33 +sweet! +brr +yummy! +3 + 7 becomes fun (x : ?e) (x0 : ?e0) => S (S x0) + S (S (S (S (S (S x))))) +DEBUG: attempt at fuzzing binary op: global (indc «PLUS») +DEBUG: attempt at fuzzing binary op: global (const «Nat.add») +DEBUG: attempt at fuzzing binary op: global (indc «AND») +DEBUG: fuzzed! +DEBUG: attempt at fuzzing binary op: global (const «andb») +DEBUG: attempt at fuzzing binary op: global (indc «OR») +DEBUG: fuzzed! +DEBUG: attempt at fuzzing binary op: global (const «orb») +DEBUG: attempt at fuzzing binary op: global (indc «EQ») +DEBUG: attempt at fuzzing binary op: global (const «Nat.eqb») +Inductive eval1 : forall T : ty, Exp T -> Val T -> Prop := + E_Num1 : forall n : nat, eval1 N (NUM n) (iNv n) + | E_Bool1 : forall b : bool, eval1 B (BOOL b) (iBv b) + | E_Plus1 : forall (e1 e2 : Exp N) (n1 n2 : nat), + eval1 N e1 (iNv n1) -> + eval1 N e2 (iNv n2) -> eval1 N (PLUS e1 e2) (iNv (n1 + n2)) + | E_AND1 : forall (e1 e2 : Exp B) (b1 b2 : bool), + eval1 B e1 (iBv b1) -> + eval1 B e2 (iBv b2) -> eval1 B (AND e1 e2) (iBv (b1 && b2)) + | E_OR1 : forall (e1 e2 : Exp B) (b1 b2 : bool), + eval1 B e1 (iBv b1) -> + eval1 B e2 (iBv b2) -> eval1 B (AND e1 e2) (iBv (b1 || b2)) + | E_EQ1 : forall (e1 e2 : Exp N) (n1 n2 : nat), + eval1 N e1 (iNv n1) -> + eval1 N e2 (iNv n2) -> eval1 B (EQ e1 e2) (iBv (Nat.eqb n1 n2)). + +Arguments eval1 T _ _ +Arguments E_Num1 n%nat_scope +Arguments E_Bool1 b%bool_scope +Arguments E_Plus1 e1 e2 (n1 n2)%nat_scope _ _ +Arguments E_AND1 e1 e2 (b1 b2)%bool_scope _ _ +Arguments E_OR1 e1 e2 (b1 b2)%bool_scope _ _ +Arguments E_EQ1 e1 e2 (n1 n2)%nat_scope _ _ synterp [str X] interp [str X] synterp [int 1] @@ -9493,126 +8073,103 @@ File "./tests/test_synterp.v", line 41, characters 12-13 X is linear: name it _X (discard) or X_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -Goal: -[decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»))] -|- X0 c0 c1 : -app - [global (indt «eq»), global (indt «nat»), - app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]], c1] -(I, 0) -conj : forall [A B : Prop], A -> B -> A /\ B - -conj is not universe polymorphic -Arguments conj [A B]%type_scope _ _ -Expands to: Constructor Coq.Init.Logic.conj -(ex_intro (fun t : Prop => True /\ True /\ t) True (conj I (conj I I))) -[int 1, str x, str a b, - trm - (app - [global (indt «eq»), X0, - app [global (indc «S»), global (indc «O»)], global (indc «O»)])] -Using H ?p of type Q -Using H ?p of type Q -Using p of type P -[trm c0, trm c3, trm (app [c2, c3])] -found P -found P /\ P -Goal: [decl c0 `x` (global (indt «nat»))] |- X0 c0 : -app - [global (indt «eq»), global (indt «nat»), - app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]], global (indc «O»)] -Proof state: - {c0} : decl c0 `x` (global (indt «nat»)) - ?- evar (X1 c0) - (app - [global (indt «eq»), global (indt «nat»), - app - [global (const «Nat.add»), c0, - app [global (indc «S»), global (indc «O»)]], - global (indc «O»)]) (X0 c0) /* suspended on X1, X0 */ -EVARS: - ?X57==[x |- x + 1 = 0] (goal evar) {?Goal} - ?X56==[ |- => fun x : nat => ?Goal] (goal evar) - ?X55==[x |- => nat] (parameter A of eq) - ?X54==[ |- => nat] (type of x) - -SHELF:|| -FUTURE GOALS STACK: - || - -Rocq-Elpi mapping: -RAW: -?X57 <-> c0 \ X1 c0 -ELAB: -?X57 <-> X0 - -#goals = 2 -[nabla c0 \ - nabla c1 \ - seal - (goal [decl c1 `Q` (sort prop), decl c0 `P` (sort prop)] (X0 c0 c1) c0 - (X1 c0 c1) []), - nabla c0 \ - nabla c1 \ - seal - (goal [decl c1 `Q` (sort prop), decl c0 `P` (sort prop)] (X2 c0 c1) c1 - (X3 c0 c1) [])] -(fun (P Q : Prop) (p : P) (q : Q) => conj ?Goal (conj ?Goal0 ?Goal1)) -(fun (P Q : Prop) (p : P) (q : Q) => conj ?Goal0 (conj ?Goal ?Goal0)) -foo = 46 +Notation p2 := (p2 nat 3 x) +example_import_projections.p1 nat 3 x : nat : nat -bar = (false :: nil)%list - : list bool -baz = (46%nat :: nil)%list - : list nat -File "./examples/tutorial_coq_elpi_tactic.v", line 632, characters 0-22: -Warning: x is already taken, Elpi will make a name up [lib,elpi,default] -File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 32-33: +p1 : forall (T : Type) (t : T), r T t -> nat + : forall (T : Type) (t : T), r T t -> nat +eq_refl +: +example_import_projections.p1 bool false (Build bool false 3 eq_refl eq_refl) = +3 + : example_import_projections.p1 bool false + (Build bool false 3 eq_refl eq_refl) = 3 +example_import_projections.f1 _ x + : bool +(eq_refl : 2 = (let z := 1 in S z)) +test2 +test1 +str hello +test1 +too many arguments +test1 +str hello my +str Dear +test1 +too many arguments +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 47, column 5, characters 953-961:), + attribute elpi.phase (leaf-str interp), attribute foo (leaf-str bar)] +[get-option elpi.loc + File "./tests/test_vernacular1.v", line 47, column 5, characters 953-961:, + get-option elpi.phase interp, get-option foo bar] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 51, column 0, characters 987-1014:), + 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 51, column 0, characters 987-1014:, + get-option elpi.phase interp, get-option foo bar, get-option poly tt] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular1.v", line 52, column 0, characters 1015-1055:), + 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 52, column 0, characters 1015-1055:, + get-option elpi.phase interp, get-option foo bar, get-option poly tt] +Query assignments: + X = 3 +app [global (const «Nat.mul»), X0, X1] type +File "./tests/test_vernacular1.v", line 5, characters 0-61: Warning: -File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 32-33 -A is linear: name it _A (discard) or A_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 40-41: +Undeclared globals: +- File "./tests/test_vernacular1.v", line 6, column 29, characters 112-117: foo. +Please add the following text to your program: +type foo list argument -> prop. +[elpi.missing-types,elpi.typecheck,elpi,default] +File "./tests/test_vernacular1.v", line 46, characters 2-11: +Warning: This command does not support this attribute: foo. +[unsupported-attributes,parsing,default] +File "./tests/test_vernacular1.v", line 65, characters 26-27: Warning: -File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 40-41 -B is linear: name it _B (discard) or B_ (fresh variable) +File "./tests/test_vernacular1.v", line 65, characters 26-27 +X is linear: name it _X (discard) or X_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 14-17: +foo = +{f1 : Type & {f2 : f1 -> Type & forall t : f1, f2 t -> bool}} + : Type +mk_foo = +fun (f1 : Type) (f2 : f1 -> Type) (f3 : forall t : f1, f2 t -> bool) => +existT (fun f4 : Type => {f5 : f4 -> Type & forall t : f4, f5 t -> bool}) f1 + (existT (fun f4 : f1 -> Type => forall t : f1, f4 t -> bool) f2 f3) + : forall (f1 : Type) (f2 : f1 -> Type), + (forall t : f1, f2 t -> bool) -> foo + +Arguments mk_foo f1%type_scope (f2 f3)%function_scope +File "./apps/eltac/theories/apply.v", line 15, characters 16-19: Warning: -File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 14-17 +File "./apps/eltac/theories/apply.v", line 15, characters 16-19 Ctx is linear: name it _Ctx (discard) or Ctx_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_tactic.v", line 843, characters 44-46: -Warning: -File "./examples/tutorial_coq_elpi_tactic.v", line 843, characters 44-46 -G1 is linear: name it _G1 (discard) or G1_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./examples/tutorial_coq_elpi_tactic.v", line 844, characters 44-46: -Warning: -File "./examples/tutorial_coq_elpi_tactic.v", line 844, characters 44-46 -G2 is linear: name it _G2 (discard) or G2_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -The argument fun x : ?e => x + ?e1 was closed under 1 binders -old replacement: fun (x : ?e) (y : ?e0) => x - y with -fun (y : ?e1) (x : ?e2) => y + x -new replacement: fun y : ?e0 => x - y with fun y : ?e1 => y + x -hello1 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 + GRnat = indt «nat» + GRplus = const «Nat.add» + GRs = indc «S» +Query assignments: + Bo = app [global (indc «S»), app [global (indc «S»), global (indc «O»)]] + C = «x» + GR = const «x» + Ty = global (indt «nat») + TyC = global (indt «nat») +Query assignments: + Bo = fun `x` (global (indt «nat»)) c0 \ c0 + C = «f» +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 \ @@ -9621,163 +8178,33 @@ [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: - - + C = «Nat.add» +The return type of m is: c0 \ c1 \ +fun `x` (global (indt «nat»)) c2 \ + fun `e` + (app [global (indt «eq»), global (indt «nat»), global (indc «O»), c2]) + c3 \ prod `_` (app [c1, global (indc «O»)]) c4 \ app [c1, c2] Query assignments: - B = fun `n` (global (indt «nat»)) c0 \ - app - [global (const «nat_ind»), - fun `n` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]], - let `_` - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app - [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) - (app - [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) - c1 \ c1, - fun `n` (global (indt «nat»)) c1 \ - fun `IHn` - (app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ - let `_` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c1], - app - [global (const «Nat.add»), app [global (indc «S»), c1], - global (indc «O»)]]) - (app - [global (const «f_equal_nat»), global (indt «nat»), - global (indc «S»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ - c3, c0] - GR = «plus_n_O» - RB = fun `n` (global (indt «nat»)) c0 \ - app - [global (const «nat_ind»), - fun `n` (global (indt «nat»)) c1 \ - app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]], - let `_` - (app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - app - [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) - (app - [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) - c1 \ c1, - fun `n` (global (indt «nat»)) c1 \ - fun `IHn` - (app - [global (indt «eq»), global (indt «nat»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ - let `_` - (app - [global (indt «eq»), global (indt «nat»), - app [global (indc «S»), c1], - app - [global (const «Nat.add»), app [global (indc «S»), c1], - global (indc «O»)]]) - (app - [global (const «f_equal_nat»), global (indt «nat»), - global (indc «S»), c1, - app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ - c3, c0] - TY = prod `n` (global (indt «nat»)) c0 \ - app - [global (indt «eq»), global (indt «nat»), c0, - app [global (const «Nat.add»), c0, global (indc «O»)]] + C = «m» + RT = c0 \ c1 \ +fun `x` (global (indt «nat»)) c2 \ + fun `e` + (app [global (indt «eq»), global (indt «nat»), global (indc «O»), c2]) + c3 \ prod `_` (app [c1, global (indc «O»)]) c4 \ app [c1, c2] +typ «elpi_examples.tutorial_coq_elpi_HOAS.6» < +typ «elpi_examples.tutorial_coq_elpi_HOAS.7» +Debug: Cannot enforce elpi_examples.tutorial_coq_elpi_HOAS.7 <= +elpi_examples.tutorial_coq_elpi_HOAS.6 because +elpi_examples.tutorial_coq_elpi_HOAS.6 +< elpi_examples.tutorial_coq_elpi_HOAS.7 +Query assignments: + U = typ «elpi_examples.tutorial_coq_elpi_HOAS.6» + U1 = typ «elpi_examples.tutorial_coq_elpi_HOAS.7» 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_examples.tutorial_coq_elpi_HOAS.7 + elpi_examples.tutorial_coq_elpi_HOAS.6} |= + elpi_examples.tutorial_coq_elpi_HOAS.6 < elpi_examples.tutorial_coq_elpi_HOAS.7 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: @@ -9787,1519 +8214,1322 @@ WEAK CONSTRAINTS: -CHR: Uniqueness of typing of frozen--911 + [] <-> [] -[c0] |> [decl c0 `x` (uvar frozen--911 [])] |- frozen--911 [] : -sort (typ «elpi.tests.test_elaborator.40») -[] |> [] |- frozen--911 [] : sort (typ «elpi.tests.test_elaborator.39») -[] |> [] |- -unify-eq (sort (typ «elpi.tests.test_elaborator.40»)) - (sort (typ «elpi.tests.test_elaborator.39»)) - +(id b) is: app [fun `x` (sort (typ X0)) c0 \ c0, sort (typ X1)] +(id a) is illtyped: +Illegal application: +The term "fun x : Type => x" of type "Type -> Type" +cannot be applied to the term + "Type" : "Type" +This term has type "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8+1}" +which should be a subtype of "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8}". +(universe inconsistency: Cannot enforce elpi_examples.tutorial_coq_elpi_HOAS.8 +< elpi_examples.tutorial_coq_elpi_HOAS.8 because +elpi_examples.tutorial_coq_elpi_HOAS.8 += elpi_examples.tutorial_coq_elpi_HOAS.8) +after typing (id b) is: +app + [fun `x` (sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8»)) c0 \ c0, + sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.9»)] : +sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8») +Universe constraints: UNIVERSES: + {elpi_examples.tutorial_coq_elpi_HOAS.9 + elpi_examples.tutorial_coq_elpi_HOAS.8} |= + elpi_examples.tutorial_coq_elpi_HOAS.9 < elpi_examples.tutorial_coq_elpi_HOAS.8 + ALGEBRAIC UNIVERSES: + {elpi_examples.tutorial_coq_elpi_HOAS.9 + elpi_examples.tutorial_coq_elpi_HOAS.8} + FLEXIBLE UNIVERSES: + elpi_examples.tutorial_coq_elpi_HOAS.9 + elpi_examples.tutorial_coq_elpi_HOAS.8 + SORTS: + + WEAK CONSTRAINTS: + + Query assignments: - R = fun `x` X0 c0 \ c0 - T = prod `x` X0 c0 \ X0 - X1_ = X1 -Syntactic constraints: - {c0} : decl c0 `x` X0 - ?- evar X2 (sort (typ «elpi.tests.test_elaborator.40»)) X0 /* suspended on X2, X0 */ + A = sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8») + B = sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.9») + ErrMsg = Illegal application: +The term "fun x : Type => x" of type "Type -> Type" +cannot be applied to the term + "Type" : "Type" +This term has type "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8+1}" +which should be a subtype of "Type@{elpi_examples.tutorial_coq_elpi_HOAS.8}". +(universe inconsistency: Cannot enforce elpi_examples.tutorial_coq_elpi_HOAS.8 +< elpi_examples.tutorial_coq_elpi_HOAS.8 because +elpi_examples.tutorial_coq_elpi_HOAS.8 += elpi_examples.tutorial_coq_elpi_HOAS.8) + ID = fun `x` (sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8»)) c0 \ c0 + T = sort (typ «elpi_examples.tutorial_coq_elpi_HOAS.8») + U = «elpi_examples.tutorial_coq_elpi_HOAS.8» + V = «elpi_examples.tutorial_coq_elpi_HOAS.9» 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_examples.tutorial_coq_elpi_HOAS.9 + elpi_examples.tutorial_coq_elpi_HOAS.8} |= + elpi_examples.tutorial_coq_elpi_HOAS.9 < elpi_examples.tutorial_coq_elpi_HOAS.8 ALGEBRAIC UNIVERSES: - {} + {elpi_examples.tutorial_coq_elpi_HOAS.9 + elpi_examples.tutorial_coq_elpi_HOAS.8} FLEXIBLE UNIVERSES: - + elpi_examples.tutorial_coq_elpi_HOAS.9 + elpi_examples.tutorial_coq_elpi_HOAS.8 SORTS: WEAK CONSTRAINTS: +app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] += +app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), global (indc «O»)]] 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») - X2_ = X0 + S = indc «S» +fun `x` (global (indt «nat»)) c0 \ + fun `x` (global (indt «nat»)) c1 \ + app [global (const «Nat.add»), c1, c0] +fun `x` (global (indt «nat»)) c0 \ + fun `x` (global (indt «nat»)) c1 \ + app [global (const «Nat.add»), c1, c0] +fun `a` (global (indt «nat»)) c0 \ + fun `b` (global (indt «nat»)) c1 \ + app [global (const «Nat.add»), c1, c0] +Query assignments: + X = c0 \ c1 \ +app [global (const «Nat.add»), c1, c0] +fun `a` (global (indt «nat»)) c0 \ + fun `b` (global (indt «nat»)) c1 \ + app [global (indt «eq»), global (indt «nat»), c0, c1] +indt «nat» +indt «nat» +before: +fun `ax` (global (indt «nat»)) c0 \ + fun `b` (global (indt «nat»)) c1 \ + app [global (indt «eq»), X0 c1, c0, c1] +after: +fun `ax` (global (indt «nat»)) c0 \ + fun `b` (global (indt «nat»)) c1 \ + app [global (indt «eq»), global (indt «nat»), c0, c1] +Query assignments: + T = fun `ax` (global (indt «nat»)) c0 \ + fun `b` (global (indt «nat»)) c1 \ + app [global (indt «eq»), global (indt «nat»), c0, c1] + X1_ = c0 \ +global (indt «nat») 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_examples.tutorial_coq_elpi_HOAS.11 + elpi_examples.tutorial_coq_elpi_HOAS.10} |= + elpi_examples.tutorial_coq_elpi_HOAS.11 < elpi_examples.tutorial_coq_elpi_HOAS.10 + Set <= elpi_examples.tutorial_coq_elpi_HOAS.11 + elpi_examples.tutorial_coq_elpi_HOAS.11 <= eq.u0 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: SORTS: - + α6 := Type WEAK CONSTRAINTS: -sort (typ X0) Query assignments: - X3_ = X0 + Bo = c0 \ +app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]] + N = `x` + T = fun `x` (global (indt «nat»)) c0 \ + app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]] + Ty = global (indt «nat») Query assignments: - S = sort (typ «elpi.tests.test_elaborator.48») - T = sort (typ «elpi.tests.test_elaborator.47») - X4_ = «elpi.tests.test_elaborator.47» -Universe constraints: -UNIVERSES: - {elpi.tests.test_elaborator.48 elpi.tests.test_elaborator.47} |= - elpi.tests.test_elaborator.47 < elpi.tests.test_elaborator.48 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_elaborator.47} -FLEXIBLE UNIVERSES: - elpi.tests.test_elaborator.47 -SORTS: - -WEAK CONSTRAINTS: - + Bo = c0 \ +app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]] + N = `x` + T = fun `x` (global (indt «nat»)) c0 \ + app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]] + Ty = global (indt «nat») +raw T = X0 -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») - X5_ = «elpi.tests.test_elaborator.49» - X6_ = «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: +SHELF: +FUTURE GOALS STACK: -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) - X7_ = X0 -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: - +Rocq-Elpi mapping: +RAW: +ELAB: + +-------------------------------- + evar (X1) (global (indt «nat»)) (X1) /* suspended on X1 */ +EVARS: + ?X11==[ |- nat] (internal placeholder) {?e0} + ?X10==[ |- => nat] (internal placeholder) + +SHELF: +FUTURE GOALS STACK: + ?X11 + +Rocq-Elpi mapping: +RAW: +?X11 <-> X1 +ELAB: +?X11 <-> X1 Query assignments: - D = X0 - R = app - [global (indc «ex_intro»), X0, - fun `hd_beta_auto` X0 c0 \ - app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - global (indc «O»)], X1, global (const «p»)] - TY = app - [global (indt «ex»), X0, - fun `hd_beta_auto` X0 c0 \ - app - [global (indt «eq»), global (indt «nat»), global (indc «O»), - global (indc «O»)]] - X10_ = X2 - X11_ = X3 - X9_ = X4 + T = X1 + X2_ = X1 Syntactic constraints: - evar (X4) (sort (typ «ex.u0»)) X0 /* suspended on X4, X0 */ - evar (X3) X0 (X1) /* suspended on X3, X1 */ - evar (X1) X0 X5 /* suspended on X1, X5 */ -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]] - X12_ = X0 - X13_ = X1 -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»)]] - X14_ = X0 - X15_ = c0 \ -X1 c0 - X16_ = X2 - X17_ = X3 + evar (X1) (global (indt «nat»)) (X1) /* suspended on X1 */ 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_examples.tutorial_coq_elpi_HOAS.12} |= + Set <= elpi_examples.tutorial_coq_elpi_HOAS.12 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: SORTS: - + α7 := Type WEAK CONSTRAINTS: +raw T = +fun `x` (global (indt «nat»)) c0 \ + app [global (const «Nat.add»), c0, X0 c0] + {c0 c1} : decl c1 `x` (global (indt «nat»)) + ?- evar (X1 c1) (global (indt «nat»)) (X1 c1) /* suspended on X1 */ +EVARS: + ?X13==[x |- nat] (internal placeholder) {?e0} + ?X12==[x |- => nat] (internal placeholder) + +SHELF: +FUTURE GOALS STACK: + ?X13 + +Rocq-Elpi mapping: +RAW: +?X13 <-> c0 \ X1 c0 +ELAB: +?X13 <-> X1 + 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»)]] - X18_ = X0 - X19_ = c0 \ + Bo = c0 \ +app [global (const «Nat.add»), c0, X1 c0] + N = `x` + T = fun `x` (global (indt «nat»)) c0 \ + app [global (const «Nat.add»), c0, X1 c0] + Ty = global (indt «nat») + X3_ = c0 \ X1 c0 - X20_ = X2 - X21_ = X3 +Syntactic constraints: + {c0 c1} : decl c1 `x` (global (indt «nat»)) + ?- evar (X1 c1) (global (indt «nat»)) (X1 c1) /* suspended on X1 */ 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_examples.tutorial_coq_elpi_HOAS.13} |= + Set <= elpi_examples.tutorial_coq_elpi_HOAS.13 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: SORTS: - + α8 := Type WEAK CONSTRAINTS: +Bo1 (not in pattern fragment) = +app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + X0 (app [global (indc «S»), global (indc «O»)])] +Bo1 before = +app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + X0 (app [global (indc «S»), global (indc «O»)])] +Bo1 after = +app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], X1] Query assignments: - A = tt - B = 0 - C = 0 - D = sort (typ «Set») - E = [«true», «false»] - F = [global (indt «bool»), global (indt «bool»)] - GR = «bool» -Query assignments: - F = app [global (const «nat_of_bool»), global (indc «true»)] -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»)]]] - X22_ = X0 - X23_ = X1 -Query assignments: - Res = app - [global (const «Z_of_nat»), - app [global (const «nat_of_bool»), global (indc «true»)]] -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»)]]] - X24_ = X0 - X25_ = X1 -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») - X26_ = c0 \ c1 \ -X0 c0 c1 + Bo = c0 \ +app [global (const «Nat.add»), c0, X1] + Bo1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], X1] + N = `x` + T = fun `x` (global (indt «nat»)) c0 \ app [global (const «Nat.add»), c0, X1] + Ty = global (indt «nat») + X5_ = c0 \ +X1 +Syntactic constraints: + evar (X1) (global (indt «nat»)) (X1) /* suspended on X1 */ 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 + {elpi_examples.tutorial_coq_elpi_HOAS.14} |= + Set <= elpi_examples.tutorial_coq_elpi_HOAS.14 ALGEBRAIC UNIVERSES: {} FLEXIBLE UNIVERSES: SORTS: - + α9 := Type WEAK CONSTRAINTS: Query assignments: - T = global (const «int») - X = primitive (uint63 99) -Query assignments: - T = global (const «float») - X = primitive (float64 993000) -Query assignments: - X27_ = X0 -File "./tests/test_elaborator.v", line 18, characters 10-12: -Warning: -File "./tests/test_elaborator.v", line 18, characters 10-12 -RB is linear: name it _RB (discard) or RB_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 17, characters 58-59: -Warning: -File "./tests/test_elaborator.v", line 17, characters 58-59 -T is linear: name it _T (discard) or T_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 18, characters 7-9: -Warning: -File "./tests/test_elaborator.v", line 18, characters 7-9 -TY is linear: name it _TY (discard) or TY_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 23, characters 10-12: -Warning: -File "./tests/test_elaborator.v", line 23, characters 10-12 -RB is linear: name it _RB (discard) or RB_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 23, characters 7-9: -Warning: -File "./tests/test_elaborator.v", line 23, characters 7-9 -TY is linear: name it _TY (discard) or TY_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 29, characters 41-42: -Warning: -File "./tests/test_elaborator.v", line 29, characters 41-42 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 29, characters 39-40: -Warning: -File "./tests/test_elaborator.v", line 29, characters 39-40 -T is linear: name it _T (discard) or T_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 31, characters 45-46: -Warning: -File "./tests/test_elaborator.v", line 31, characters 45-46 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 31, characters 43-44: -Warning: -File "./tests/test_elaborator.v", line 31, characters 43-44 -T is linear: name it _T (discard) or T_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 38, characters 29-30: -Warning: -File "./tests/test_elaborator.v", line 38, characters 29-30 -S is linear: name it _S (discard) or S_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 38, characters 31-32: -Warning: -File "./tests/test_elaborator.v", line 38, characters 31-32 -T is linear: name it _T (discard) or T_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 41, characters 15-16: -Warning: -File "./tests/test_elaborator.v", line 41, characters 15-16 -S is linear: name it _S (discard) or S_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 42, characters 29-31: -Warning: -File "./tests/test_elaborator.v", line 42, characters 29-31 -TW is linear: name it _TW (discard) or TW_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 64, characters 32-33: -Warning: -File "./tests/test_elaborator.v", line 64, characters 32-33 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 71, characters 32-33: -Warning: -File "./tests/test_elaborator.v", line 71, characters 32-33 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 78, characters 45-46: -Warning: -File "./tests/test_elaborator.v", line 78, characters 45-46 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 90, characters 45-46: -Warning: -File "./tests/test_elaborator.v", line 90, characters 45-46 -R is linear: name it _R (discard) or R_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 97, characters 62-63: + Bo = c0 \ +app [global (const «andb»), c0, X0 c0] + Bo1 = app + [global (const «andb»), app [global (indc «S»), global (indc «O»)], + X0 (app [global (indc «S»), global (indc «O»)])] + Bo2 = app + [global (const «andb»), + app + [global (const «nat2bool»), + app [global (indc «S»), global (indc «O»)]], X1] + N = `x` + T = fun `x` (global (indt «nat»)) c0 \ app [global (const «andb»), c0, X0 c0] + Ty = global (indt «nat») + X6_ = X0 +Syntactic constraints: + evar (X2) (global (indt «bool»)) X1 /* suspended on X2, X1 */ +File "./examples/tutorial_coq_elpi_HOAS.v", line 87, characters 19-24: Warning: -File "./tests/test_elaborator.v", line 97, characters 62-63 -A is linear: name it _A (discard) or A_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 87, characters 19-24 +GRnat is linear: name it _GRnat (discard) or GRnat_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 97, characters 64-65: +File "./examples/tutorial_coq_elpi_HOAS.v", line 89, characters 20-26: Warning: -File "./tests/test_elaborator.v", line 97, characters 64-65 -B is linear: name it _B (discard) or B_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 89, characters 20-26 +GRplus is linear: name it _GRplus (discard) or GRplus_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 97, characters 66-67: +File "./examples/tutorial_coq_elpi_HOAS.v", line 88, characters 17-20: Warning: -File "./tests/test_elaborator.v", line 97, characters 66-67 -C is linear: name it _C (discard) or C_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 88, characters 17-20 +GRs is linear: name it _GRs (discard) or GRs_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 97, characters 68-69: +File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 24-26: Warning: -File "./tests/test_elaborator.v", line 97, characters 68-69 -D is linear: name it _D (discard) or D_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 24-26 +Bo is linear: name it _Bo (discard) or Bo_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 97, characters 70-71: +File "./examples/tutorial_coq_elpi_HOAS.v", line 107, characters 20-22: Warning: -File "./tests/test_elaborator.v", line 97, characters 70-71 -E is linear: name it _E (discard) or E_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 107, characters 20-22 +Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 97, characters 72-73: +File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 28-31: Warning: -File "./tests/test_elaborator.v", line 97, characters 72-73 -F is linear: name it _F (discard) or F_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 113, characters 28-31 +TyC is linear: name it _TyC (discard) or TyC_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 108, characters 66-67: +File "./examples/tutorial_coq_elpi_HOAS.v", line 152, characters 24-26: Warning: -File "./tests/test_elaborator.v", line 108, characters 66-67 -F is linear: name it _F (discard) or F_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 152, characters 24-26 +Bo is linear: name it _Bo (discard) or Bo_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 121, characters 35-38: +File "./examples/tutorial_coq_elpi_HOAS.v", line 195, characters 24-26: Warning: -File "./tests/test_elaborator.v", line 121, characters 35-38 -Res is linear: name it _Res (discard) or Res_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 195, characters 24-26 +Bo is linear: name it _Bo (discard) or Bo_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 135, characters 64-67: +File "./examples/tutorial_coq_elpi_HOAS.v", line 285, characters 17-18: Warning: -File "./tests/test_elaborator.v", line 135, characters 64-67 -Res is linear: name it _Res (discard) or Res_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 285, characters 17-18 +V is linear: name it _V (discard) or V_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 138, characters 33-36: +File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 10-11: Warning: -File "./tests/test_elaborator.v", line 138, characters 33-36 -Res is linear: name it _Res (discard) or Res_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 10-11 +N is linear: name it _N (discard) or N_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 151, characters 49-50: +File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 12-14: Warning: -File "./tests/test_elaborator.v", line 151, characters 49-50 -R is linear: name it _R (discard) or R_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 681, characters 12-14 +Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 151, characters 47-48: +File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 10-11: Warning: -File "./tests/test_elaborator.v", line 151, characters 47-48 -T is linear: name it _T (discard) or T_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 10-11 +N is linear: name it _N (discard) or N_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 156, characters 36-37: +File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 12-14: Warning: -File "./tests/test_elaborator.v", line 156, characters 36-37 -T is linear: name it _T (discard) or T_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 718, characters 12-14 +Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 156, characters 38-39: +File "./examples/tutorial_coq_elpi_HOAS.v", line 756, characters 40-43: Warning: -File "./tests/test_elaborator.v", line 156, characters 38-39 -X is linear: name it _X (discard) or X_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 756, characters 40-43 +Bo2 is linear: name it _Bo2 (discard) or Bo2_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 157, characters 39-40: +File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 10-11: Warning: -File "./tests/test_elaborator.v", line 157, characters 39-40 -T is linear: name it _T (discard) or T_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 10-11 +N is linear: name it _N (discard) or N_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_elaborator.v", line 157, characters 41-42: +File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 12-14: Warning: -File "./tests/test_elaborator.v", line 157, characters 41-42 -X is linear: name it _X (discard) or X_ (fresh variable) +File "./examples/tutorial_coq_elpi_HOAS.v", line 754, characters 12-14 +Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -Foo.x = 3 - : nat -Foo.x = 3 - : nat -Foo.x2 = 4 - : nat -eq_refl : Foo.x = 5 - : Foo.x = 5 -A.B.c : nat - -A.B.c is not universe polymorphic -A.B.c is transparent -Expands to: Constant elpi.apps.NES.tests.test_NES.A_aux_4.A.B.c -A1.B1.d : nat - -A1.B1.d is not universe polymorphic -A1.B1.d is transparent -Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_6.A1.B1.d -A1.B1.c : nat - -A1.B1.c is not universe polymorphic -A1.B1.c is transparent -Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_5.A1.B1.c -x = 5 - : nat -x2 = 4 - : nat -B1.c = 1 - : nat -B1.d = 1 - : nat -d = 1 - : nat -A2.B2.f = 2 - : nat -This.Is.A.Long.Namespace.stuff = 1 - : nat - = 1 - : 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 -Cats.And.Dogs.x = 42 - : nat -(true && false)%bool - : bool -natmul R n : ringType_sort R - : ringType_sort R -natmul R n : ringType_sort R - : ringType_sort R - {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: - || - -Rocq-Elpi mapping: -RAW: -?X2 <-> c0 \ X0 c0 -ELAB: -?X2 <-> X1 - -Debug: - {c0} : decl c0 `x` (global (indt «nat»)) - ?- evar (X0 c0) - (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) - (X1 c0) /* suspended on X0, X1 */ -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) [])] -[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»)) - [])] +The age of alice is 20 Query assignments: - T = sort (typ «elpi.tests.test_HOAS.3») - U = «elpi.tests.test_HOAS.3» + A = 20 +mallory is 23 years old Query assignments: - U = «elpi.tests.test_HOAS.4» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.4} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - + P = mallory +alice is 20 years old Query assignments: - U = «foo» + P = alice +mallory and bob are 23 years old Query assignments: - X = c0 \ c1 \ c2 \ -X0 c0 c1 c2 - X3_ = global (indt «nat») -Syntactic constraints: - {c0 c1 c2 c3 c4 c5 c6} : - decl c6 `z` (app [global (const «N»), c5]), - decl c5 `x` (global (indt «nat»)), - decl c4 `a` (global (indt «bool»)) - ?- evar (X0 c4 c5 c6) (X1 c4 c5 c6) (X0 c4 c5 c6) /* suspended on X0 */ - {c0 c1 c2 c3 c4 c5 c6} : - decl c6 `z` (app [global (const «N»), c5]), - decl c5 `x` (global (indt «nat»)), - decl c4 `a` (global (indt «bool»)) - ?- evar (X2 c4 c5 c6) (sort (typ «elpi.tests.test_HOAS.9»)) - (X1 c4 c5 c6) /* suspended on X2, X1 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.9 elpi.tests.test_HOAS.8} |= - Set <= elpi.tests.test_HOAS.8 - elpi.tests.test_HOAS.8 <= elpi.tests.test_HOAS.8 -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α3 := Type - α4 -WEAK CONSTRAINTS: - - ----------------------------------- - {c0 c1} : decl c1 `a` (global (indt «bool»)) - ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ - {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ -EVARS: - ?X10==[ |- Type] (internal placeholder) {?elpi_evar} - ?X9==[a |- ?elpi_evar] (internal placeholder) {?e0} - ?X8==[a |- => ?elpi_evar] (internal placeholder) - -SHELF: -FUTURE GOALS STACK:?X10 -?X9 - -Rocq-Elpi mapping: -RAW: -?X9 <-> c0 \ X2 c0 -?X10 <-> X0 -ELAB: -?X9 <-> X2 -?X10 <-> X1 - -X2 c0 : X1 + A = 23 + P = mallory + Q = bob +I picked P = mallory +I picked Q = mallory +I picked Q = bob +the last choice worked! +mallory and bob are 23 years old Query assignments: - TY = X1 - X = c0 \ c1 \ -X2 c0 -Syntactic constraints: - {c0 c1} : decl c1 `a` (global (indt «bool»)) - ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ - {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.10} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α5 -WEAK CONSTRAINTS: - - -Raw term: -app - [global (const «add»), primitive (uint63 2000000003333002), - primitive (uint63 1)] -Nice term: (2000000003333002 + 1)%uint63 -Red: -2000000003333003%uint63 -Raw term: -app - [global (const «add»), primitive (float64 24000000000000), - primitive (float64 1)] -Nice term: 24000000000000 + 1 -Red: 24000000000001 + A = 23 + P = mallory + Q = bob +bob is older than alice 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 `_elpi_renamed_n_3` (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»)]]] - X10_ = c0 \ c1 \ c2 \ -global (indt «nat») - X4_ = global (indt «nat») - X5_ = c0 \ -global (indt «nat») - X6_ = c0 \ c1 \ -global (indt «nat») - X7_ = c0 \ -global (indt «nat») - X8_ = c0 \ c1 \ -global (indt «nat») - X9_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») + X = alice +both bob and mallory are older than alice 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 `_elpi_renamed_n_2` (global (indt «nat»)) c2 \ - global (indt «nat»)) - [c1, - fun `p` (global (indt «nat»)) c2 \ - app - [global (indc «S»), - app - [fix `plus` 0 - (prod `_elpi_renamed_n_3` (global (indt «nat»)) c3 \ - prod `_elpi_renamed_m_4` (global (indt «nat»)) c4 \ - global (indt «nat»)) c3 \ - fun `_elpi_renamed_n_4` (global (indt «nat»)) c4 \ - fun `_elpi_renamed_m_5` (global (indt «nat»)) c5 \ - match c4 - (fun `_elpi_renamed_n_6` (global (indt «nat»)) c6 \ - global (indt «nat»)) - [c5, - fun `_elpi_renamed_p_6` (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»)]]] - X11_ = global (indt «nat») - X12_ = c0 \ -global (indt «nat») - X13_ = c0 \ c1 \ c2 \ -global (indt «nat») - X14_ = c0 \ c1 \ -global (indt «nat») - X15_ = c0 \ c1 \ c2 \ -global (indt «nat») - X16_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - X17_ = c0 \ c1 \ c2 \ c3 \ c4 \ -global (indt «nat») - X18_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») - X19_ = c0 \ c1 \ c2 \ c3 \ c4 \ -global (indt «nat») - X20_ = c0 \ c1 \ c2 \ c3 \ c4 \ c5 \ c6 \ -global (indt «nat») - X21_ = c0 \ c1 \ c2 \ c3 \ c4 \ c5 \ -global (indt «nat») + X = alice +F = c0 \ age alice c0 +F 20 = age alice 20 +F 23 = age alice 23 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 `_elpi_renamed_n_4` (global (indt «nat»)) c4 \ - global (indt «nat»)) - [c3, - fun `_elpi_renamed_p_4` (global (indt «nat»)) c4 \ - app [global (indc «S»), app [c1, c4, c3]]], c0, - app - [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] - X22_ = global (indt «nat») - X23_ = global (indt «nat») - X24_ = c0 \ -global (indt «nat») - X25_ = c0 \ c1 \ -global (indt «nat») - X26_ = c0 \ c1 \ c2 \ -global (indt «nat») - X27_ = c0 \ c1 \ -global (indt «nat») - X28_ = c0 \ c1 \ c2 \ -global (indt «nat») - X29_ = c0 \ c1 \ c2 \ c3 \ c4 \ -global (indt «nat») - X30_ = c0 \ c1 \ c2 \ c3 \ -global (indt «nat») + F = c0 \ +age alice c0 +λx.x ~> fun c0 \ c0 +(λx.x) (λx.x) ~> fun c0 \ c0 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»)]]] + I = fun c0 \ c0 + T = fun c0 \ c0 + T1 = fun c0 \ c0 +(Fst foo bar) ~> foo +(foo bar) ~> app foo bar Query assignments: - C = «proj1» + Fst = fun c0 \ fun c1 \ c0 + S = app foo bar + S1 = app foo bar + T = app (app (fun c0 \ fun c1 \ c0) foo) bar + T1 = foo +The type of λx.λy.x is: arr X0 (arr X1 X0) Query assignments: - C = «proj1» - P = elpi.tests.test_HOAS.P''.proj1 -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]) -some - (pglobal (const «toto») - «elpi.tests.test_HOAS.23 elpi.tests.test_HOAS.24») -prod `T1` (sort (typ «elpi.tests.test_HOAS.23»)) c0 \ - prod `T2` (sort (typ «elpi.tests.test_HOAS.24»)) c1 \ prod `x` c0 c2 \ c0 + Ty = arr X0 (arr X1 X0) +Error: fun c0 \ app c0 c0 has no type Query assignments: - Body = some - (pglobal (const «toto») - «elpi.tests.test_HOAS.23 elpi.tests.test_HOAS.24») - C = «titi» - Term = prod `T1` (sort (typ «elpi.tests.test_HOAS.23»)) c0 \ - prod `T2` (sort (typ «elpi.tests.test_HOAS.24»)) c1 \ prod `x` c0 c2 \ c0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.24 - elpi.tests.test_HOAS.23 -SORTS: - -WEAK CONSTRAINTS: - - -pglobal (const «toto») X0 -pglobal (const «toto») «u1 u2» -toto + Delta = fun c0 \ app c0 c0 + Ty = X0 +2 + 1 = s (s (s z)) Query assignments: - %arg1 = toto - X31_ = X0 - X32_ = «elpi.tests.test_HOAS.27 elpi.tests.test_HOAS.28» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.28 elpi.tests.test_HOAS.27} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.28 elpi.tests.test_HOAS.27} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.28 - elpi.tests.test_HOAS.27 -SORTS: - -WEAK CONSTRAINTS: - - -app - [pglobal (const «t») X0, global (indt «nat»), - pglobal (const «fnat») X1] -app - [pglobal (const «t») «elpi.tests.test_HOAS.33», global (indt «nat»), - pglobal (const «fnat») «»] + R = s (s (s z)) Query assignments: - T = app - [pglobal (const «t») «elpi.tests.test_HOAS.33», global (indt «nat»), - pglobal (const «fnat») «»] - Ty = global (indt «nat») - X33_ = «elpi.tests.test_HOAS.33» - X34_ = «» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.33} |= - Set <= elpi.tests.test_HOAS.33 - Set = elpi.tests.test_HOAS.33 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.33} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.33 := Set -SORTS: - -WEAK CONSTRAINTS: - - + X = X0 + Z = X1 +Syntactic constraints: sum X0 (s z) X1 /* suspended on X0 */ +The result is: s z Query assignments: - Arity = prod `T` (sort (typ «elpi.tests.test_HOAS.34»)) c0 \ - sort (typ «elpi.tests.test_HOAS.34») - GRF = indt «F» - I = «elpi.tests.test_HOAS.34» - Ind = «F» - K = [«Build_F»] - KTys = [prod `T` (sort (typ «elpi.tests.test_HOAS.34»)) c0 \ - prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.34», c0]] - TyF = prod `T` (sort (typ «elpi.tests.test_HOAS.34»)) c0 \ - sort (typ «elpi.tests.test_HOAS.34») -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.34} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.34} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.34 -SORTS: - -WEAK CONSTRAINTS: - - + X = z + Z = s z Query assignments: - Decl = parameter T explicit (sort (typ «elpi.tests.test_HOAS.35»)) c0 \ - record F (sort (typ «elpi.tests.test_HOAS.35»)) Build_F - (field [coercion off, canonical tt] t c0 c1 \ end-record) - GRF = indt «F» - I = «elpi.tests.test_HOAS.35» - Ind = «F» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.35} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.35} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.35 -SORTS: - -WEAK CONSTRAINTS: - - -«elpi.tests.test_HOAS.36» «elpi.tests.test_HOAS.37» -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 - SORTS: - - WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} |= - elpi.tests.test_HOAS.36 = elpi.tests.test_HOAS.37 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 := elpi.tests.test_HOAS.37 - SORTS: - - WEAK CONSTRAINTS: - - + X = s z +Debug: sum X0 (s z) X1 /* suspended on X0 */ +Currently Y = X1 +Debug: sum X2 (s z) X3 /* suspended on X2 */ +Currently Y = s X3 +Finally Y = s (s z) Query assignments: - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.36» - I2 = «elpi.tests.test_HOAS.37» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} |= - elpi.tests.test_HOAS.36 = elpi.tests.test_HOAS.37 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.37 - elpi.tests.test_HOAS.36 := elpi.tests.test_HOAS.37 -SORTS: - -WEAK CONSTRAINTS: - - -«elpi.tests.test_HOAS.38» «» -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.38} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.38} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.38 - SORTS: - - WEAK CONSTRAINTS: - - -different universe instance lengths -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.38} |= - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.38} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.38 - SORTS: - - WEAK CONSTRAINTS: - - + X = s z + Y = s (s z) + Z = z Query assignments: - E = different universe instance lengths - GRF = indt «F» - GRfnat = const «fnat» - I1 = «elpi.tests.test_HOAS.38» - I2 = «» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.38} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.38} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.38 -SORTS: - -WEAK CONSTRAINTS: - - + X = X0 +Syntactic constraints: + even X0 /* suspended on X0 */ odd X0 /* suspended on X0 */ +X0 can't be even and odd at the same time Query assignments: - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.39» - I2 = «elpi.tests.test_HOAS.39» - U = «elpi.tests.test_HOAS.39» - UL1 = [«elpi.tests.test_HOAS.39»] -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.39} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.39} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.39 -SORTS: - -WEAK CONSTRAINTS: - - -Cannot enforce elpi.tests.test_HOAS.40 = elpi.tests.test_HOAS.41 because -elpi.tests.test_HOAS.40 < elpi.tests.test_HOAS.41 + A = [1, 2, 3, 3, 2, 1] Query assignments: - E = Cannot enforce elpi.tests.test_HOAS.40 = elpi.tests.test_HOAS.41 because -elpi.tests.test_HOAS.40 < elpi.tests.test_HOAS.41 - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.40» - I2 = «elpi.tests.test_HOAS.41» - L1 = «elpi.tests.test_HOAS.40» - L2 = «elpi.tests.test_HOAS.41» - U1 = «elpi.tests.test_HOAS.40» - U2 = «elpi.tests.test_HOAS.41» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40} |= - elpi.tests.test_HOAS.40 < elpi.tests.test_HOAS.41 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.41 - elpi.tests.test_HOAS.40 -SORTS: - -WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} |= - elpi.tests.test_HOAS.44 < elpi.tests.test_HOAS.45 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.45 - elpi.tests.test_HOAS.44 - SORTS: - - WEAK CONSTRAINTS: - - + A = [1, 2, 3, 3, 2, 1] +result = 5 Query assignments: - GRF = indt «F2» - I1 = «elpi.tests.test_HOAS.44» - I2 = «elpi.tests.test_HOAS.45» - L1 = «elpi.tests.test_HOAS.44» - L2 = «elpi.tests.test_HOAS.45» - U1 = «elpi.tests.test_HOAS.44» - U2 = «elpi.tests.test_HOAS.45» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} |= - elpi.tests.test_HOAS.44 < elpi.tests.test_HOAS.45 - elpi.tests.test_HOAS.44 <= elpi.tests.test_HOAS.45 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.45 - elpi.tests.test_HOAS.44 -SORTS: - -WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.47 elpi.tests.test_HOAS.46} |= - elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.47} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.47 - elpi.tests.test_HOAS.46 - SORTS: - - WEAK CONSTRAINTS: - - -Cannot enforce elpi.tests.test_HOAS.47 = elpi.tests.test_HOAS.46 because -elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 + X = result = + Y = 5 +result = 5 Query assignments: - E = Cannot enforce elpi.tests.test_HOAS.47 = elpi.tests.test_HOAS.46 because -elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 - GRF = indt «F» - I1 = «elpi.tests.test_HOAS.46» - I2 = «elpi.tests.test_HOAS.47» - L1 = «elpi.tests.test_HOAS.46» - L2 = «elpi.tests.test_HOAS.47» - U1 = «elpi.tests.test_HOAS.46» - U2 = «elpi.tests.test_HOAS.47» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.47 elpi.tests.test_HOAS.46} |= - elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.47} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.47 - elpi.tests.test_HOAS.46 -SORTS: - -WEAK CONSTRAINTS: - - + %arg1 = 5 Query assignments: - GR = indt «nat» + R1 = X0 + R2 = [2, 3, 4] + R3 = [2, 3, 4] Query assignments: - GR = indt «F» - I = «elpi.tests.test_HOAS.48» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.48} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.48 -SORTS: - -WEAK CONSTRAINTS: - - + R = [2, 3, 4] +Y = c0 +arr X0 (arr X1 X0) Query assignments: - GR = indt «F» -pglobal (indt «F») «elpi.tests.test_HOAS.50» + Ty = arr X0 (arr X1 X0) +Debug: run 1 {{{ + +Debug: + rid:0 step:1 gid:4 user:curgoal = , + of (fun c0 \ fun c1 \ c0) X0 , coq.say X0 + +Debug: + rid:0 step:1 gid:4 user:rule = and + +Debug: + rid:0 step:1 gid:4 user:subgoal = 5 + +Debug: + rid:0 step:1 gid:5 user:newgoal = of (fun c0 \ fun c1 \ c0) X0 + +Debug: + rid:0 step:1 gid:4 user:subgoal = 6 + +Debug: + rid:0 step:1 gid:6 user:newgoal = coq.say X0 + +Debug: + rid:0 step:1 gid:4 user:rule:and = success + +Debug: }}} -> (0.001s) +Debug: run 2 {{{ + +Debug: + rid:0 step:2 gid:5 user:curgoal = of + of (fun c0 \ fun c1 \ c0) X0 + +Debug: + rid:0 step:2 gid:5 user:rule = backchain + +Debug: + rid:0 step:2 gid:5 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + +Debug: }}} -> (0.000s) +Debug: select 3 {{{ + +Debug: + rid:0 step:2 gid:5 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + (of (fun A0) (arr A2 A1)) :- ( + pi (c0 \ + (of c0 A2 => of (A0 c0) A1))). + +Debug: + rid:0 step:2 gid:0 user:assign = A0 := c0 \ + fun c1 \ c0 + +Debug: + rid:0 step:2 gid:0 user:assign = X0 := arr X1 X2 + +Debug: + rid:0 step:2 gid:5 user:subgoal = 7 + +Debug: + rid:0 step:2 gid:7 user:newgoal = pi c0 \ of c0 X1 => of (fun c1 \ c0) X2 + +Debug: + rid:0 step:2 gid:7 user:rule:backchain = success + +Debug: }}} -> (0.001s) +Debug: run 3 {{{ + +Debug: + rid:0 step:3 gid:7 user:curgoal = pi + pi c0 \ of c0 X1 => of (fun c1 \ c0) X2 + +Debug: rid:0 step:3 gid:7 user:rule = pi + +Debug: + rid:0 step:3 gid:7 user:subgoal = 8 + +Debug: + rid:0 step:3 gid:8 user:newgoal = of c0 X1 => of (fun c1 \ c0) X2 + +Debug: + rid:0 step:3 gid:8 user:rule:pi = success + +Debug: }}} -> (0.000s) +Debug: run 4 {{{ + +Debug: + rid:0 step:4 gid:8 user:curgoal = => + of c0 X1 => of (fun c1 \ c0) X2 + +Debug: + rid:0 step:4 gid:8 user:rule = implication + +Debug: + rid:0 step:4 gid:8 user:subgoal = 9 + +Debug: + rid:0 step:4 gid:9 user:newgoal = of (fun c1 \ c0) X2 + +Debug: + rid:0 step:4 gid:9 user:rule:implication = success + +Debug: }}} -> (0.001s) +Debug: run 5 {{{ + +Debug: + rid:0 step:5 gid:9 user:curgoal = of + of (fun c1 \ c0) X2 + +Debug: + rid:0 step:5 gid:9 user:rule = backchain + +Debug: + rid:0 step:5 gid:9 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + +Debug: }}} -> (0.000s) +Debug: select 4 {{{ + +Debug: + rid:0 step:5 gid:9 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + (of (fun A0) (arr A2 A1)) :- ( + pi (c0 \ + (of c0 A2 => of (A0 c0) A1))). + +Debug: + rid:0 step:5 gid:0 user:assign = A0 := c1 \ + c0 + +Debug: + rid:0 step:5 gid:0 user:assign = X2 := arr X3 X4 + +Debug: + rid:0 step:5 gid:9 user:subgoal = 10 + +Debug: + rid:0 step:5 gid:10 user:newgoal = pi c1 \ of c1 X3 => of c0 X4 + +Debug: + rid:0 step:5 gid:10 user:rule:backchain = success + +Debug: }}} -> (0.000s) +Debug: run 6 {{{ + +Debug: + rid:0 step:6 gid:10 user:curgoal = pi + pi c1 \ of c1 X3 => of c0 X4 + +Debug: + rid:0 step:6 gid:10 user:rule = pi + +Debug: + rid:0 step:6 gid:10 user:subgoal = 11 + +Debug: + rid:0 step:6 gid:11 user:newgoal = of c1 X3 => of c0 X4 + +Debug: + rid:0 step:6 gid:11 user:rule:pi = success + +Debug: }}} -> (0.000s) +Debug: run 7 {{{ + +Debug: + rid:0 step:7 gid:11 user:curgoal = => + of c1 X3 => of c0 X4 + +Debug: + rid:0 step:7 gid:11 user:rule = implication + +Debug: + rid:0 step:7 gid:11 user:subgoal = 12 + +Debug: + rid:0 step:7 gid:12 user:newgoal = of c0 X4 + +Debug: + rid:0 step:7 gid:12 user:rule:implication = success + +Debug: }}} -> (0.000s) +Debug: run 8 {{{ + +Debug: + rid:0 step:8 gid:12 user:curgoal = of + of c0 X4 + +Debug: + rid:0 step:8 gid:12 user:rule = backchain + +Debug: + rid:0 step:8 gid:12 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: + +Debug: }}} -> (0.000s) +Debug: select 5 {{{ + +Debug: + rid:0 step:8 gid:12 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: + (of c0 X1) :- . + +Debug: + rid:0 step:8 gid:0 user:assign = X1 := X4 + +Debug: + rid:0 step:8 gid:12 user:rule:backchain = success + +Debug: }}} -> (0.000s) +Debug: run 9 {{{ + +Debug: + rid:0 step:9 gid:6 user:curgoal = coq.say + coq.say (arr X4 (arr X3 X4)) + +Debug: + rid:0 step:9 gid:6 user:rule = builtin + +Debug: + rid:0 step:9 gid:6 user:rule:builtin:name = coq.say + +arr X4 (arr X3 X4) +Debug: + rid:0 step:9 gid:6 user:rule:builtin = success + +Debug: }}} -> (0.000s) Query assignments: - %arg1 = pglobal (indt «F») «elpi.tests.test_HOAS.50» - GR = indt «F» - I = «elpi.tests.test_HOAS.50» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.50} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.50 -SORTS: - -WEAK CONSTRAINTS: - - -«elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.51» + Ty = arr X4 (arr X3 X4) +Debug: run 1 {{{ + +Debug: + rid:1 step:1 gid:13 user:curgoal = , + of (fun c0 \ app c0 c0) X0 , coq.say X0 + +Debug: + rid:1 step:1 gid:13 user:rule = and + +Debug: + rid:1 step:1 gid:13 user:subgoal = 14 + +Debug: + rid:1 step:1 gid:14 user:newgoal = of (fun c0 \ app c0 c0) X0 + +Debug: + rid:1 step:1 gid:13 user:subgoal = 15 + +Debug: + rid:1 step:1 gid:15 user:newgoal = coq.say X0 + +Debug: + rid:1 step:1 gid:13 user:rule:and = success + +Debug: }}} -> (0.000s) +Debug: run 2 {{{ + +Debug: + rid:1 step:2 gid:14 user:curgoal = of + of (fun c0 \ app c0 c0) X0 + +Debug: + rid:1 step:2 gid:14 user:rule = backchain + +Debug: + rid:1 step:2 gid:14 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + +Debug: }}} -> (0.000s) +Debug: select 3 {{{ + +Debug: + rid:1 step:2 gid:14 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + (of (fun A0) (arr A2 A1)) :- ( + pi (c0 \ + (of c0 A2 => of (A0 c0) A1))). + +Debug: + rid:1 step:2 gid:0 user:assign = A0 := c0 \ + app c0 c0 + +Debug: + rid:1 step:2 gid:0 user:assign = X0 := arr X1 X2 + +Debug: + rid:1 step:2 gid:14 user:subgoal = 16 + +Debug: + rid:1 step:2 gid:16 user:newgoal = pi c0 \ of c0 X1 => of (app c0 c0) X2 + +Debug: + rid:1 step:2 gid:16 user:rule:backchain = success + +Debug: }}} -> (0.000s) +Debug: run 3 {{{ + +Debug: + rid:1 step:3 gid:16 user:curgoal = pi + pi c0 \ of c0 X1 => of (app c0 c0) X2 + +Debug: + rid:1 step:3 gid:16 user:rule = pi + +Debug: + rid:1 step:3 gid:16 user:subgoal = 17 + +Debug: + rid:1 step:3 gid:17 user:newgoal = of c0 X1 => of (app c0 c0) X2 + +Debug: + rid:1 step:3 gid:17 user:rule:pi = success + +Debug: }}} -> (0.000s) +Debug: run 4 {{{ + +Debug: + rid:1 step:4 gid:17 user:curgoal = => + of c0 X1 => of (app c0 c0) X2 + +Debug: + rid:1 step:4 gid:17 user:rule = implication + +Debug: + rid:1 step:4 gid:17 user:subgoal = 18 + +Debug: + rid:1 step:4 gid:18 user:newgoal = of (app c0 c0) X2 + +Debug: + rid:1 step:4 gid:18 user:rule:implication = success + +Debug: }}} -> (0.000s) +Debug: run 5 {{{ + +Debug: + rid:1 step:5 gid:18 user:curgoal = of + of (app c0 c0) X2 + +Debug: + rid:1 step:5 gid:18 user:rule = backchain + +Debug: + rid:1 step:5 gid:18 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 591, column 2, characters 15200-15250: + +Debug: }}} -> (0.000s) +Debug: select 4 {{{ + +Debug: + rid:1 step:5 gid:18 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 591, column 2, characters 15200-15250: + (of (app A0 A3) A2) :- ( + of A0 (arr A1 A2)), + (of A3 A1). + +Debug: + rid:1 step:5 gid:0 user:assign = A0 := c0 + +Debug: + rid:1 step:5 gid:0 user:assign = A3 := c0 + +Debug: + rid:1 step:5 gid:0 user:assign = A2 := X2 + +Debug: + rid:1 step:5 gid:18 user:subgoal = 19 + +Debug: + rid:1 step:5 gid:19 user:newgoal = of c0 (arr X3^1 X2) + +Debug: + rid:1 step:5 gid:19 user:subgoal = 20 + +Debug: + rid:1 step:5 gid:20 user:newgoal = of c0 X3^1 + +Debug: + rid:1 step:5 gid:19 user:rule:backchain = success + +Debug: }}} -> (0.000s) +Debug: run 6 {{{ + +Debug: + rid:1 step:6 gid:19 user:curgoal = of + of c0 (arr X3^1 X2) + +Debug: + rid:1 step:6 gid:19 user:rule = backchain + +Debug: + rid:1 step:6 gid:19 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: + +Debug: }}} -> (0.000s) +Debug: select 5 {{{ + +Debug: + rid:1 step:6 gid:19 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: + (of c0 X1) :- . + +Debug: + rid:1 step:6 gid:0 user:assign:expand = X3^1 := X4 c0 + +Debug: + rid:1 step:6 gid:0 user:assign:restrict = 0 X4 c0 := c0 \ + .X5 + +Debug: + rid:1 step:6 gid:0 user:assign = X1 := arr X5 X2 + +Debug: + rid:1 step:6 gid:19 user:rule:backchain = success + +Debug: }}} -> (0.000s) +Debug: run 7 {{{ + +Debug: + rid:1 step:7 gid:20 user:curgoal = of + of c0 X5 + +Debug: + rid:1 step:7 gid:20 user:rule = backchain + +Debug: + rid:1 step:7 gid:20 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: + +Debug: }}} -> (0.000s) +Debug: select 6 {{{ + +Debug: + rid:1 step:7 gid:20 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: + (of c0 (arr X5 X2)) :- . + +Debug: + rid:1 step:7 gid:20 user:backchain:fail-to = unify X5 with arr X5 X2 + +Debug: }}} -> (0.000s) +Debug: select 7 {{{ + +Debug: + rid:1 step:7 gid:20 user:rule:backchain = fail + +Debug: }}} -> (0.000s) +Debug: run 6 {{{ + +Debug: + rid:2 step:6 gid:27 user:curgoal = pi + pi c1 \ of c1 X0 => of c0 X1 + +Debug: + rid:2 step:6 gid:27 user:rule = pi + +Debug: + rid:2 step:6 gid:27 user:subgoal = 28 + +Debug: + rid:2 step:6 gid:28 user:newgoal = of c1 X0 => of c0 X1 + +Debug: + rid:2 step:6 gid:28 user:rule:pi = success + +Debug: }}} -> (0.000s) +Debug: run 7 {{{ + +Debug: + rid:2 step:7 gid:28 user:curgoal = => + of c1 X0 => of c0 X1 + +Debug: + rid:2 step:7 gid:28 user:rule = implication + +Debug: + rid:2 step:7 gid:28 user:subgoal = 29 + +Debug: + rid:2 step:7 gid:29 user:newgoal = of c0 X1 + +Debug: + rid:2 step:7 gid:29 user:rule:implication = success + +Debug: }}} -> (0.000s) +Debug: run 8 {{{ + +Debug: + rid:2 step:8 gid:29 user:curgoal = of + of c0 X1 + +Debug: + rid:2 step:8 gid:29 user:rule = backchain + +Debug: + rid:2 step:8 gid:29 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: + +Debug: }}} -> (0.000s) +Debug: select 5 {{{ + +Debug: + rid:2 step:8 gid:29 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: + (of c0 X2) :- . + +Debug: + rid:2 step:8 gid:0 user:assign = X2 := X1 + +Debug: + rid:2 step:8 gid:29 user:rule:backchain = success + +Debug: }}} -> (0.000s) +arr X1 (arr X0 X1) +Query assignments: + Ty = arr X1 (arr X0 X1) +Debug: run 2 {{{ + +Debug: + rid:3 step:2 gid:31 user:curgoal = of + of (fun c0 \ fun c1 \ c0) X0 + +Debug: + rid:3 step:2 gid:31 user:rule = backchain + +Debug: + rid:3 step:2 gid:31 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + +Debug: }}} -> (0.000s) +Debug: select 3 {{{ + +Debug: + rid:3 step:2 gid:31 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + (of (fun A0) (arr A2 A1)) :- ( + pi (c0 \ + (of c0 A2 => of (A0 c0) A1))). + +Debug: + rid:3 step:2 gid:0 user:assign = A0 := c0 \ + fun c1 \ c0 + +Debug: + rid:3 step:2 gid:0 user:assign = X0 := arr X1 X2 + +Debug: + rid:3 step:2 gid:31 user:subgoal = 33 + +Debug: + rid:3 step:2 gid:33 user:newgoal = pi c0 \ of c0 X1 => of (fun c1 \ c0) X2 + +Debug: + rid:3 step:2 gid:33 user:rule:backchain = success + +Debug: }}} -> (0.001s) +Debug: run 5 {{{ + +Debug: + rid:3 step:5 gid:35 user:curgoal = of + of (fun c1 \ c0) X2 + +Debug: + rid:3 step:5 gid:35 user:rule = backchain + +Debug: + rid:3 step:5 gid:35 user:rule:backchain:candidates = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + +Debug: }}} -> (0.000s) +Debug: select 4 {{{ + +Debug: + rid:3 step:5 gid:35 user:rule:backchain:try = File "./examples/tutorial_elpi_lang.v", line 596, column 2, characters 15366-15421: + (of (fun A0) (arr A2 A1)) :- ( + pi (c0 \ + (of c0 A2 => of (A0 c0) A1))). + +Debug: + rid:3 step:5 gid:0 user:assign = A0 := c1 \ + c0 + +Debug: + rid:3 step:5 gid:0 user:assign = X2 := arr X3 X4 + +Debug: + rid:3 step:5 gid:35 user:subgoal = 36 + +Debug: + rid:3 step:5 gid:36 user:newgoal = pi c1 \ of c1 X3 => of c0 X4 + +Debug: + rid:3 step:5 gid:36 user:rule:backchain = success + +Debug: }}} -> (0.000s) +Debug: run 8 {{{ + +Debug: + rid:3 step:8 gid:38 user:curgoal = of + of c0 X4 + +Debug: + rid:3 step:8 gid:38 user:rule = backchain + +Debug: + rid:3 step:8 gid:38 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: + +Debug: }}} -> (0.000s) +Debug: select 5 {{{ + +Debug: + rid:3 step:8 gid:38 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: + (of c0 X1) :- . + +Debug: + rid:3 step:8 gid:0 user:assign = X1 := X4 + +Debug: + rid:3 step:8 gid:38 user:rule:backchain = success + +Debug: }}} -> (0.000s) +arr X4 (arr X3 X4) Query assignments: - I = «elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.51» - U = «elpi.tests.test_HOAS.51» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.51} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - -WEAK CONSTRAINTS: - - -Universe constraints: ------------------- -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} |= - elpi.tests.test_HOAS.52 < elpi.tests.test_HOAS.53 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.53 - elpi.tests.test_HOAS.52 - SORTS: - - WEAK CONSTRAINTS: - - -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} |= - elpi.tests.test_HOAS.52 < elpi.tests.test_HOAS.53 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.53 - elpi.tests.test_HOAS.52 - SORTS: - - WEAK CONSTRAINTS: - - + Ty = arr X4 (arr X3 X4) +Debug: run 8 {{{ + +Debug: + rid:4 step:8 gid:47 user:curgoal = of + of c0 X0 + +Debug: + rid:4 step:8 gid:47 user:rule = backchain + +Debug: + rid:4 step:8 gid:47 user:rule:backchain:candidates = File "(context step_id:4)", line 1, column 0, characters 0-0: + +Debug: }}} -> (0.000s) +Debug: select 5 {{{ + +Debug: + rid:4 step:8 gid:47 user:rule:backchain:try = File "(context step_id:4)", line 1, column 0, characters 0-0: + (of c0 X1) :- . + +Debug: + rid:4 step:8 gid:0 user:assign = X1 := X0 + +Debug: + rid:4 step:8 gid:47 user:rule:backchain = success + +Debug: }}} -> (0.001s) +arr X0 (arr X2 X0) Query assignments: - Body = sort (typ «elpi.tests.test_HOAS.52») - LX = «elpi.tests.test_HOAS.52» - LY = «elpi.tests.test_HOAS.53» - Type = sort (typ «elpi.tests.test_HOAS.53») - UX = «elpi.tests.test_HOAS.52» - UY = «elpi.tests.test_HOAS.53» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} |= - elpi.tests.test_HOAS.52 < elpi.tests.test_HOAS.53 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.53 - elpi.tests.test_HOAS.52 -SORTS: - -WEAK CONSTRAINTS: - - -poly@{u u0} : Type@{u0} -(* u u0 |= u < u0 *) - -poly is universe polymorphic -poly is transparent -Expands to: Constant elpi.tests.test_HOAS.poly -poly@{Set -elpi.tests.test_HOAS.54} - : Type@{elpi.tests.test_HOAS.54} -(* {elpi.tests.test_HOAS.54} |= Set < elpi.tests.test_HOAS.54 *) -Box not a defined object. -sort (typ «Set») + Ty = arr X0 (arr X2 X0) +calling mypred on 3 +calling mypred on 2 +calling mypred on 1 +calling mypred on 0 +ok Query assignments: - U = «elpi.tests.test_HOAS.55» -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.55} |= Set = elpi.tests.test_HOAS.55 -ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.55} -FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.55 := Set -SORTS: - -WEAK CONSTRAINTS: - - -Inductive tree@{u} (A : Type@{u}) : Type@{max(Set,u)} := - leaf : A -> tree@{u} A | node : A -> list (tree@{u} A) -> tree@{u} A. -(* u |= Set <= list.u0 - u <= list.u0 *) - -Arguments tree A%type_scope -Arguments leaf A%type_scope _ -Arguments node A%type_scope _ _%list_scope -parameter A explicit (sort (typ «elpi.tests.test_HOAS.64»)) c0 \ - inductive tree tt (arity (sort (typ «elpi.tests.test_HOAS.65»))) c1 \ - [constructor leaf (arity (prod `_` c0 c2 \ c1)), - constructor node - (arity - (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] -Universe constraints: UNIVERSES: - {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68 - elpi.tests.test_HOAS.67 elpi.tests.test_HOAS.66 - elpi.tests.test_HOAS.65 elpi.tests.test_HOAS.64} |= - elpi.tests.test_HOAS.64 < elpi.tests.test_HOAS.66 - elpi.tests.test_HOAS.65 < elpi.tests.test_HOAS.67 - Set <= list.u0 - Set <= elpi.tests.test_HOAS.65 - Set <= elpi.tests.test_HOAS.69 - elpi.tests.test_HOAS.64 <= list.u0 - elpi.tests.test_HOAS.64 <= elpi.tests.test_HOAS.65 - elpi.tests.test_HOAS.64 <= elpi.tests.test_HOAS.68 - elpi.tests.test_HOAS.64 <= elpi.tests.test_HOAS.69 - elpi.tests.test_HOAS.65 <= list.u0 - elpi.tests.test_HOAS.65 <= elpi.tests.test_HOAS.68 - elpi.tests.test_HOAS.65 <= elpi.tests.test_HOAS.69 - elpi.tests.test_HOAS.68 <= elpi.tests.test_HOAS.65 - elpi.tests.test_HOAS.69 <= elpi.tests.test_HOAS.65 - ALGEBRAIC UNIVERSES: - {elpi.tests.test_HOAS.64} - FLEXIBLE UNIVERSES: - elpi.tests.test_HOAS.64 - SORTS: - - WEAK CONSTRAINTS: - - + A = X0 + B = X0 + C = X0 Query assignments: - D = parameter A explicit (sort (typ «M.tree.u0»)) c0 \ - inductive tree tt (arity (sort (typ «M.tree.u1»))) c1 \ - [constructor leaf (arity (prod `_` c0 c2 \ c1)), - constructor node - (arity - (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] - I = «tree» - X35_ = X0 -Universe constraints: -UNIVERSES: - {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68 elpi.tests.test_HOAS.67 - elpi.tests.test_HOAS.66} |= - M.tree.u0 < elpi.tests.test_HOAS.66 - M.tree.u1 < elpi.tests.test_HOAS.67 - Set <= elpi.tests.test_HOAS.69 - M.tree.u0 <= elpi.tests.test_HOAS.68 - M.tree.u0 <= elpi.tests.test_HOAS.69 - M.tree.u1 <= elpi.tests.test_HOAS.68 - M.tree.u1 <= elpi.tests.test_HOAS.69 - elpi.tests.test_HOAS.68 <= M.tree.u1 - elpi.tests.test_HOAS.69 <= M.tree.u1 -ALGEBRAIC UNIVERSES: - {M.tree.u0} -FLEXIBLE UNIVERSES: - M.tree.u0 -SORTS: - -WEAK CONSTRAINTS: - - -File "./tests/test_HOAS.v", line 94, characters 46-61: + A = X0 + B = X0 + C = X0 +File "./examples/tutorial_elpi_lang.v", line 554, characters 12-17: Warning: -File "./tests/test_HOAS.v", line 94, characters 46-61 +File "./examples/tutorial_elpi_lang.v", line 554, characters 12-17 +Hummm is linear: name it _Hummm (discard) or Hummm_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_elpi_lang.v", line 670, characters 12-14: +Warning: +File "./examples/tutorial_elpi_lang.v", line 670, characters 12-14 +Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_elpi_lang.v", line 826, characters 26-27: +Warning: +File "./examples/tutorial_elpi_lang.v", line 826, characters 26-27 X is linear: name it _X (discard) or X_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 101, characters 19-24: +File "./examples/tutorial_elpi_lang.v", line 826, characters 34-35: Warning: -File "./tests/test_HOAS.v", line 101, characters 19-24 +File "./examples/tutorial_elpi_lang.v", line 826, characters 34-35 +Y is linear: name it _Y (discard) or Y_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_elpi_lang.v", line 856, characters 26-27: +Warning: +File "./examples/tutorial_elpi_lang.v", line 856, characters 26-27 X is linear: name it _X (discard) or X_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 127, characters 0-40: -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] -File "./tests/test_HOAS.v", line 130, characters 0-40: -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] -File "./tests/test_HOAS.v", line 306, characters 18-20: +File "./examples/tutorial_elpi_lang.v", line 856, characters 34-35: Warning: -File "./tests/test_HOAS.v", line 306, characters 18-20 -Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 856, characters 34-35 +Y is linear: name it _Y (discard) or Y_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 320, characters 43-48: +File "./examples/tutorial_elpi_lang.v", line 888, characters 21-22: Warning: -File "./tests/test_HOAS.v", line 320, characters 43-48 -Arity is linear: name it _Arity (discard) or Arity_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 888, characters 21-22 +X is linear: name it _X (discard) or X_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 320, characters 49-50: +File "./examples/tutorial_elpi_lang.v", line 888, characters 29-30: Warning: -File "./tests/test_HOAS.v", line 320, characters 49-50 -K is linear: name it _K (discard) or K_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 888, characters 29-30 +Z is linear: name it _Z (discard) or Z_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 320, characters 51-55: +File "./examples/tutorial_elpi_lang.v", line 1020, characters 26-27: Warning: -File "./tests/test_HOAS.v", line 320, characters 51-55 -KTys is linear: name it _KTys (discard) or KTys_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1020, characters 26-27 +A is linear: name it _A (discard) or A_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 316, characters 32-35: +File "./examples/tutorial_elpi_lang.v", line 1057, characters 27-28: Warning: -File "./tests/test_HOAS.v", line 316, characters 32-35 -TyF is linear: name it _TyF (discard) or TyF_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1057, characters 27-28 +A is linear: name it _A (discard) or A_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 467, characters 42-46: +File "./examples/tutorial_elpi_lang.v", line 1146, characters 18-20: Warning: -File "./tests/test_HOAS.v", line 467, characters 42-46 -Decl is linear: name it _Decl (discard) or Decl_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1146, characters 18-20 +R1 is linear: name it _R1 (discard) or R1_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "coq-builtin.elpi", line 461, characters 50-51: +File "./examples/tutorial_elpi_lang.v", line 1147, characters 15-17: Warning: -File "coq-builtin.elpi", line 461, characters 50-51 -I is linear: name it _I (discard) or I_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1147, characters 15-17 +R2 is linear: name it _R2 (discard) or R2_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 506, characters 20-22: +File "./examples/tutorial_elpi_lang.v", line 1148, characters 16-18: Warning: -File "./tests/test_HOAS.v", line 506, characters 20-22 -I2 is linear: name it _I2 (discard) or I2_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1148, characters 16-18 +R3 is linear: name it _R3 (discard) or R3_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 504, characters 23-26: +File "./examples/tutorial_elpi_lang.v", line 1184, characters 16-17: Warning: -File "./tests/test_HOAS.v", line 504, characters 23-26 -UL1 is linear: name it _UL1 (discard) or UL1_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1184, characters 16-17 +R is linear: name it _R (discard) or R_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 558, characters 32-33: +File "./examples/tutorial_elpi_lang.v", line 1511, characters 9-10: Warning: -File "./tests/test_HOAS.v", line 558, characters 32-33 -I is linear: name it _I (discard) or I_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1511, characters 9-10 +A is linear: name it _A (discard) or A_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "coq-builtin.elpi", line 461, characters 50-51: +File "./examples/tutorial_elpi_lang.v", line 1511, characters 20-21: Warning: -File "coq-builtin.elpi", line 461, characters 50-51 -I is linear: name it _I (discard) or I_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1511, characters 20-21 +B is linear: name it _B (discard) or B_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_HOAS.v", line 629, characters 36-37: +File "./examples/tutorial_elpi_lang.v", line 1511, characters 28-29: Warning: -File "./tests/test_HOAS.v", line 629, characters 36-37 -U is linear: name it _U (discard) or U_ (fresh variable) +File "./examples/tutorial_elpi_lang.v", line 1511, characters 28-29 +C is linear: name it _C (discard) or C_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -1 +File "./examples/tutorial_elpi_lang.v", line 1518, characters 9-10: +Warning: +File "./examples/tutorial_elpi_lang.v", line 1518, characters 9-10 +A is linear: name it _A (discard) or A_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_elpi_lang.v", line 1518, characters 20-21: +Warning: +File "./examples/tutorial_elpi_lang.v", line 1518, characters 20-21 +B is linear: name it _B (discard) or B_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_elpi_lang.v", line 1518, characters 28-29: +Warning: +File "./examples/tutorial_elpi_lang.v", line 1518, characters 28-29 +C is linear: name it _C (discard) or C_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +hello1 +Hello [str world!] +Hello [int 46] +Hello [str there] +Hello [str my, str friend] +Hello [str this.is.a.qualified.name] +Hello +[trm + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app [global (indc «S»), global (indc «O»)]])] +Hello +[const-decl test + (some + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app [global (indc «S»), global (indc «O»)]])) (arity (sort prop))] +Hello +[indt-decl + (record test (sort (typ «Set»)) Build_test + (field [coercion off, canonical tt] f1 (global (indt «nat»)) c0 \ + field [coercion off, canonical tt] f2 + (app + [global (indt «eq»), global (indt «nat»), c0, + app [global (indc «S»), global (indc «O»)]]) c1 \ end-record))] +The type of +app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), global (indc «O»)], global (indc «O»)] is +sort prop +1 = true + : Prop +T= +app + [global (indt «eq»), X0, app [global (indc «S»), global (indc «O»)], + global (indc «true»)] +T1= +app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), global (indc «O»)], + app [global (const «bool2nat»), global (indc «true»)]] +Ty= sort prop +nK_bool = 2 : nat -trying i = i -trying elpi_ctx_entry_2_ = elpi_ctx_entry_2_ -trying elpi_ctx_entry_1_ = elpi_ctx_entry_1_ /\ p0 = p0 -trying elpi_ctx_entry_1_ = elpi_ctx_entry_1_ /\ p0 = p0 -normP : -forall {T : Type} {e : T} {op : T -> T -> T} {gamma : list T} {t1 t2 : lang}, -(forall a b c : T, op a (op b c) = op (op a b) c) -> -(forall a : T, op e a = a) -> -(forall a : T, op a e = a) -> -norm t1 = norm t2 -> interp T e op gamma t1 = interp T e op gamma t2 +nK_False = 0 + : nat +Inductive tree' (A : Set) : Set := + leaf' : tree' A | node' : tree' A -> A -> tree' A -> tree' A. -normP is not universe polymorphic -Arguments normP {T}%type_scope {e} {op}%function_scope - {gamma}%list_scope {t1 t2} (p1 p2 p3)%function_scope - H -normP is transparent -Expands to: Constant elpi_examples_stdlib.example_reflexive_tactic.normP -(fun x y z t : Z => - normP Z.add_assoc Z.add_0_l Z.add_0_r - (eq_refl - <: - norm (add (add (var 0) (var 1)) (add (add (var 2) zero) (var 3))) = - norm (add (add (var 0) (add (var 1) (var 2))) (var 3)))) -Debug: In environment -x, y, z, t : Z -Unable to unify "var 1" with - "var 0". -Raised at Loc.raise in file "lib/loc.ml", line 101, characters 16-23 -Called from Unification.unify_0_with_initial_metas in file "pretyping/unification.ml", line 1281, characters 13-48 -Re-raised at Exninfo.iraise in file "clib/exninfo.ml", line 81, characters 4-38 -Called from Unification.unify_with_eta in file "pretyping/unification.ml", line 1320, characters 14-48 -Called from Unification.merge_instances in file "pretyping/unification.ml", line 1333, characters 23-64 -Called from Unification.w_merge.w_merge_rec in file "pretyping/unification.ml", line 1554, characters 14-63 -Called from Unification.w_merge in file "pretyping/unification.ml", lines 1608-1610, characters 4-35 -Called from Unification.w_unify_core_0 in file "pretyping/unification.ml", line 1661, characters 12-65 -Called from Clenv.clenv_unify in file "proofs/clenv.ml", line 298, characters 25-73 -Called from Clenv.res_pf.(fun) in file "proofs/clenv.ml", line 771, characters 16-56 -Called from Proofview.Goal.enter.f in file "engine/proofview.ml", line 1136, characters 40-46 -Called from Proofview.Goal.enter.(fun) in file "engine/proofview.ml", line 1141, characters 10-34 +Arguments tree' A%type_scope +Arguments leaf' A%type_scope +Arguments node' A%type_scope _ _ _ +bob is 24 years old +alice is 21 years old +bob is 24 years old +alice is 21 years old +[attribute elpi.loc + (leaf-loc + File "./examples/tutorial_coq_elpi_command.v", line 610, column 31, characters 17257-17261:), + attribute elpi.phase (leaf-str interp), attribute this (leaf-str ), + attribute more (node [attribute stuff (leaf-str 33)])] +options= +[get-option elpi.loc + File "./examples/tutorial_coq_elpi_command.v", line 643, column 31, characters 18094-18104:, + get-option elpi.phase interp, get-option this tt, get-option more.stuff 33] +33 tt +That is all folks! +going from source to target via plane +synterp x := some _ +interp x := +some + (app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]) +The module is «elpi_examples.tutorial_coq_elpi_command.Module59» +Box.Box.Box.Box.foo = fun n : nat => n + 2 + : nat -> nat +Arguments Box.Box.Box.Box.foo n%nat_scope +Module NextModule2 := Struct End +File "./examples/tutorial_coq_elpi_command.v", line 610, characters 2-24: +Warning: This command does not support these attributes: more, this. +[unsupported-attributes,parsing,default] +File "./examples/tutorial_coq_elpi_command.v", line 643, characters 2-24: +Warning: This command does not support these attributes: more, this. +[unsupported-attributes,parsing,default] +File "./examples/tutorial_coq_elpi_command.v", line 644, characters 7-14: +Warning: This command does not support this attribute: unknown. +[unsupported-attributes,parsing,default] +File "./apps/NES/theories/NES.v", line 39, characters 0-42: +Warning: +Undeclared globals: +- File "/build/reproducible-path/coq-elpi-2.5.0/apps/NES/elpi/nes_interp.elpi", line 6, column 24, characters 152-161: ns. +Please add the following text to your program: +type ns list string -> modpath -> prop. +[elpi.missing-types,elpi.typecheck,elpi,default] nabla c1 \ seal (goal [decl c1 `P` (sort prop)] (app [global (const «id»), X0, X1]) @@ -12020,7 +10250,7 @@ Debug: rid:0 step:1 gid:4 user:rule:and = success -Debug: }}} -> (0.123s) +Debug: }}} -> (0.002s) Debug: run 2 {{{ Debug: @@ -12071,7 +10301,7 @@ Debug: rid:0 step:2 gid:7 user:rule:pi = success -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: run 3 {{{ Debug: @@ -12120,7 +10350,7 @@ Debug: rid:0 step:3 gid:8 user:rule:pi = success -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: run 4 {{{ Debug: @@ -12206,7 +10436,7 @@ Debug: rid:0 step:4 gid:9 user:rule:backchain = success -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: run 5 {{{ Debug: @@ -12259,7 +10489,7 @@ Debug: rid:0 step:5 gid:9 user:rule:builtin = success -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: run 6 {{{ Debug: @@ -12390,7 +10620,7 @@ global (indc «O»)], c2], c1]]) (X1 c0 c1) -Debug: }}} -> (0.001s) +Debug: }}} -> (0.003s) Debug: run 7 {{{ Debug: @@ -13252,7 +11482,7 @@ Debug: rid:4 step:116 gid:253 user:rule:eq = success -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: run 117 {{{ Debug: @@ -13379,6 +11609,1831 @@ File "./tests/test_tactic.v", line 5, characters 28-32 Type is linear: name it _Type (discard) or Type_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] +Query assignments: + B = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]] + GR = «Nat.add» + RB = fix `add` 0 + (prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat»)) c0 \ + fun `n` (global (indt «nat»)) c1 \ + fun `m` (global (indt «nat»)) c2 \ + match c1 (fun `n` (global (indt «nat»)) c3 \ global (indt «nat»)) + [c2, + fun `p` (global (indt «nat»)) c3 \ + app [global (indc «S»), app [c0, c3, c2]]] + T = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») + TY = prod `n` (global (indt «nat»)) c0 \ + prod `m` (global (indt «nat»)) c1 \ global (indt «nat») +Syntactic constraints: + {c0 c1 c2 c3} : + decl c3 `n` (global (indt «nat»)), decl c2 `m` (global (indt «nat»)), + decl c1 `n` (global (indt «nat»)), + decl c0 `add` + (prod `n` (global (indt «nat»)) c1 \ + prod `m` (global (indt «nat»)) c2 \ global (indt «nat»)) + ?- evar (X0 c0 c1 c2 c3) (sort (typ «elpi.tests.test_elaborator.17»)) + (X1 c0 c1 c2 c3) /* suspended on X0, X1 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.23 elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.21 elpi.tests.test_elaborator.20 + elpi.tests.test_elaborator.19 elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.17 elpi.tests.test_elaborator.16 + elpi.tests.test_elaborator.15 elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.13 elpi.tests.test_elaborator.12 + elpi.tests.test_elaborator.11 elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.9 elpi.tests.test_elaborator.8 + elpi.tests.test_elaborator.7 elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.5 elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.3 elpi.tests.test_elaborator.2 + elpi.tests.test_elaborator.1} |= + Set <= elpi.tests.test_elaborator.1 + Set <= elpi.tests.test_elaborator.2 + Set <= elpi.tests.test_elaborator.3 + Set <= elpi.tests.test_elaborator.8 + Set <= elpi.tests.test_elaborator.12 + Set <= elpi.tests.test_elaborator.16 + Set <= elpi.tests.test_elaborator.20 + elpi.tests.test_elaborator.1 <= elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.2 <= elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.3 <= elpi.tests.test_elaborator.4 + elpi.tests.test_elaborator.4 <= elpi.tests.test_elaborator.5 + elpi.tests.test_elaborator.5 <= elpi.tests.test_elaborator.6 + elpi.tests.test_elaborator.6 <= elpi.tests.test_elaborator.7 + elpi.tests.test_elaborator.8 <= elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.9 <= elpi.tests.test_elaborator.10 + elpi.tests.test_elaborator.10 <= elpi.tests.test_elaborator.11 + elpi.tests.test_elaborator.12 <= elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.13 <= elpi.tests.test_elaborator.14 + elpi.tests.test_elaborator.14 <= elpi.tests.test_elaborator.15 + elpi.tests.test_elaborator.16 <= elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.17 <= elpi.tests.test_elaborator.18 + elpi.tests.test_elaborator.18 <= elpi.tests.test_elaborator.19 + elpi.tests.test_elaborator.20 <= elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.21 <= elpi.tests.test_elaborator.22 + elpi.tests.test_elaborator.22 <= elpi.tests.test_elaborator.23 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + B = fun `n` (global (indt «nat»)) c0 \ + app + [global (const «nat_ind»), + fun `n` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]], + let `_` + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app + [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) + (app + [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) + c1 \ c1, + fun `n` (global (indt «nat»)) c1 \ + fun `IHn` + (app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ + let `_` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c1], + app + [global (const «Nat.add»), app [global (indc «S»), c1], + global (indc «O»)]]) + (app + [global (const «f_equal_nat»), global (indt «nat»), + global (indc «S»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ + c3, c0] + GR = «plus_n_O» + RB = fun `n` (global (indt «nat»)) c0 \ + app + [global (const «nat_ind»), + fun `n` (global (indt «nat»)) c1 \ + app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]], + let `_` + (app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + app + [global (const «Nat.add»), global (indc «O»), global (indc «O»)]]) + (app + [global (indc «eq_refl»), global (indt «nat»), global (indc «O»)]) + c1 \ c1, + fun `n` (global (indt «nat»)) c1 \ + fun `IHn` + (app + [global (indt «eq»), global (indt «nat»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)]]) c2 \ + let `_` + (app + [global (indt «eq»), global (indt «nat»), + app [global (indc «S»), c1], + app + [global (const «Nat.add»), app [global (indc «S»), c1], + global (indc «O»)]]) + (app + [global (const «f_equal_nat»), global (indt «nat»), + global (indc «S»), c1, + app [global (const «Nat.add»), c1, global (indc «O»)], c2]) c3 \ + c3, c0] + TY = prod `n` (global (indt «nat»)) c0 \ + app + [global (indt «eq»), global (indt «nat»), c0, + app [global (const «Nat.add»), c0, global (indc «O»)]] +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.38 elpi.tests.test_elaborator.37 + elpi.tests.test_elaborator.36 elpi.tests.test_elaborator.35 + elpi.tests.test_elaborator.34 elpi.tests.test_elaborator.33 + elpi.tests.test_elaborator.32 elpi.tests.test_elaborator.31 + elpi.tests.test_elaborator.30 elpi.tests.test_elaborator.29 + elpi.tests.test_elaborator.28 elpi.tests.test_elaborator.27 + elpi.tests.test_elaborator.26 elpi.tests.test_elaborator.25 + elpi.tests.test_elaborator.24} |= + Set <= eq.u0 + Set <= Coq.Init.Logic.11 + Set <= elpi.tests.test_elaborator.24 + Set <= elpi.tests.test_elaborator.28 + Set <= elpi.tests.test_elaborator.32 + elpi.tests.test_elaborator.24 <= elpi.tests.test_elaborator.26 + elpi.tests.test_elaborator.25 <= elpi.tests.test_elaborator.26 + elpi.tests.test_elaborator.26 <= elpi.tests.test_elaborator.27 + elpi.tests.test_elaborator.28 <= elpi.tests.test_elaborator.30 + elpi.tests.test_elaborator.29 <= elpi.tests.test_elaborator.30 + elpi.tests.test_elaborator.30 <= elpi.tests.test_elaborator.31 + elpi.tests.test_elaborator.32 <= elpi.tests.test_elaborator.34 + elpi.tests.test_elaborator.33 <= elpi.tests.test_elaborator.34 + elpi.tests.test_elaborator.34 <= elpi.tests.test_elaborator.35 + elpi.tests.test_elaborator.36 <= elpi.tests.test_elaborator.37 + elpi.tests.test_elaborator.37 <= elpi.tests.test_elaborator.38 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +CHR: Uniqueness of typing of frozen--911 + [] <-> [] +[c0] |> [decl c0 `x` (uvar frozen--911 [])] |- frozen--911 [] : +sort (typ «elpi.tests.test_elaborator.40») +[] |> [] |- frozen--911 [] : sort (typ «elpi.tests.test_elaborator.39») +[] |> [] |- +unify-eq (sort (typ «elpi.tests.test_elaborator.40»)) + (sort (typ «elpi.tests.test_elaborator.39»)) + +Query assignments: + R = fun `x` X0 c0 \ c0 + T = prod `x` X0 c0 \ X0 + X1_ = X1 +Syntactic constraints: + {c0} : decl c0 `x` X0 + ?- evar X2 (sort (typ «elpi.tests.test_elaborator.40»)) X0 /* suspended on X2, X0 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.42 elpi.tests.test_elaborator.41 + elpi.tests.test_elaborator.40 elpi.tests.test_elaborator.39} |= + elpi.tests.test_elaborator.39 <= elpi.tests.test_elaborator.41 + elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.39 + elpi.tests.test_elaborator.40 <= elpi.tests.test_elaborator.41 + elpi.tests.test_elaborator.41 <= elpi.tests.test_elaborator.42 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + 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») + X2_ = 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: + + +sort (typ X0) +Query assignments: + X3_ = X0 +Query assignments: + S = sort (typ «elpi.tests.test_elaborator.48») + T = sort (typ «elpi.tests.test_elaborator.47») + X4_ = «elpi.tests.test_elaborator.47» +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.48 elpi.tests.test_elaborator.47} |= + elpi.tests.test_elaborator.47 < elpi.tests.test_elaborator.48 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_elaborator.47} +FLEXIBLE UNIVERSES: + elpi.tests.test_elaborator.47 +SORTS: + +WEAK CONSTRAINTS: + + +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») + X5_ = «elpi.tests.test_elaborator.49» + X6_ = «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: + + +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) + X7_ = X0 +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: + + +Query assignments: + D = X0 + R = app + [global (indc «ex_intro»), X0, + fun `hd_beta_auto` X0 c0 \ + app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + global (indc «O»)], X1, global (const «p»)] + TY = app + [global (indt «ex»), X0, + fun `hd_beta_auto` X0 c0 \ + app + [global (indt «eq»), global (indt «nat»), global (indc «O»), + global (indc «O»)]] + X10_ = X2 + X11_ = X3 + X9_ = X4 +Syntactic constraints: + evar (X4) (sort (typ «ex.u0»)) X0 /* suspended on X4, X0 */ + evar (X3) X0 (X1) /* suspended on X3, X1 */ + evar (X1) X0 X5 /* suspended on X1, X5 */ +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]] + X12_ = X0 + X13_ = X1 +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»)]] + X14_ = X0 + X15_ = c0 \ +X1 c0 + X16_ = X2 + X17_ = X3 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.58 elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.56 elpi.tests.test_elaborator.55} |= + Set <= elpi.tests.test_elaborator.55 + elpi.tests.test_elaborator.55 <= elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.56 <= elpi.tests.test_elaborator.57 + elpi.tests.test_elaborator.57 <= elpi.tests.test_elaborator.58 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +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»)]] + X18_ = X0 + X19_ = c0 \ +X1 c0 + X20_ = X2 + X21_ = X3 +Universe constraints: +UNIVERSES: + {elpi.tests.test_elaborator.62 elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.60 elpi.tests.test_elaborator.59} |= + Set <= elpi.tests.test_elaborator.59 + elpi.tests.test_elaborator.59 <= elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.60 <= elpi.tests.test_elaborator.61 + elpi.tests.test_elaborator.61 <= elpi.tests.test_elaborator.62 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + A = tt + B = 0 + C = 0 + D = sort (typ «Set») + E = [«true», «false»] + F = [global (indt «bool»), global (indt «bool»)] + GR = «bool» +Query assignments: + F = app [global (const «nat_of_bool»), global (indc «true»)] +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»)]]] + X22_ = X0 + X23_ = X1 +Query assignments: + Res = app + [global (const «Z_of_nat»), + app [global (const «nat_of_bool»), global (indc «true»)]] +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»)]]] + X24_ = X0 + X25_ = X1 +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») + X26_ = 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: + + +Query assignments: + T = global (const «int») + X = primitive (uint63 99) +Query assignments: + T = global (const «float») + X = primitive (float64 993000) +Query assignments: + X27_ = X0 +File "./tests/test_elaborator.v", line 18, characters 10-12: +Warning: +File "./tests/test_elaborator.v", line 18, characters 10-12 +RB is linear: name it _RB (discard) or RB_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 17, characters 58-59: +Warning: +File "./tests/test_elaborator.v", line 17, characters 58-59 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 18, characters 7-9: +Warning: +File "./tests/test_elaborator.v", line 18, characters 7-9 +TY is linear: name it _TY (discard) or TY_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 23, characters 10-12: +Warning: +File "./tests/test_elaborator.v", line 23, characters 10-12 +RB is linear: name it _RB (discard) or RB_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 23, characters 7-9: +Warning: +File "./tests/test_elaborator.v", line 23, characters 7-9 +TY is linear: name it _TY (discard) or TY_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 29, characters 41-42: +Warning: +File "./tests/test_elaborator.v", line 29, characters 41-42 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 29, characters 39-40: +Warning: +File "./tests/test_elaborator.v", line 29, characters 39-40 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 31, characters 45-46: +Warning: +File "./tests/test_elaborator.v", line 31, characters 45-46 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 31, characters 43-44: +Warning: +File "./tests/test_elaborator.v", line 31, characters 43-44 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 38, characters 29-30: +Warning: +File "./tests/test_elaborator.v", line 38, characters 29-30 +S is linear: name it _S (discard) or S_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 38, characters 31-32: +Warning: +File "./tests/test_elaborator.v", line 38, characters 31-32 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 41, characters 15-16: +Warning: +File "./tests/test_elaborator.v", line 41, characters 15-16 +S is linear: name it _S (discard) or S_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 42, characters 29-31: +Warning: +File "./tests/test_elaborator.v", line 42, characters 29-31 +TW is linear: name it _TW (discard) or TW_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 64, characters 32-33: +Warning: +File "./tests/test_elaborator.v", line 64, characters 32-33 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 71, characters 32-33: +Warning: +File "./tests/test_elaborator.v", line 71, characters 32-33 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 78, characters 45-46: +Warning: +File "./tests/test_elaborator.v", line 78, characters 45-46 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 90, characters 45-46: +Warning: +File "./tests/test_elaborator.v", line 90, characters 45-46 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 97, characters 62-63: +Warning: +File "./tests/test_elaborator.v", line 97, characters 62-63 +A is linear: name it _A (discard) or A_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 97, characters 64-65: +Warning: +File "./tests/test_elaborator.v", line 97, characters 64-65 +B is linear: name it _B (discard) or B_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 97, characters 66-67: +Warning: +File "./tests/test_elaborator.v", line 97, characters 66-67 +C is linear: name it _C (discard) or C_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 97, characters 68-69: +Warning: +File "./tests/test_elaborator.v", line 97, characters 68-69 +D is linear: name it _D (discard) or D_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 97, characters 70-71: +Warning: +File "./tests/test_elaborator.v", line 97, characters 70-71 +E is linear: name it _E (discard) or E_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 97, characters 72-73: +Warning: +File "./tests/test_elaborator.v", line 97, characters 72-73 +F is linear: name it _F (discard) or F_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 108, characters 66-67: +Warning: +File "./tests/test_elaborator.v", line 108, characters 66-67 +F is linear: name it _F (discard) or F_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 121, characters 35-38: +Warning: +File "./tests/test_elaborator.v", line 121, characters 35-38 +Res is linear: name it _Res (discard) or Res_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 135, characters 64-67: +Warning: +File "./tests/test_elaborator.v", line 135, characters 64-67 +Res is linear: name it _Res (discard) or Res_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 138, characters 33-36: +Warning: +File "./tests/test_elaborator.v", line 138, characters 33-36 +Res is linear: name it _Res (discard) or Res_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 151, characters 49-50: +Warning: +File "./tests/test_elaborator.v", line 151, characters 49-50 +R is linear: name it _R (discard) or R_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 151, characters 47-48: +Warning: +File "./tests/test_elaborator.v", line 151, characters 47-48 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 156, characters 36-37: +Warning: +File "./tests/test_elaborator.v", line 156, characters 36-37 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 156, characters 38-39: +Warning: +File "./tests/test_elaborator.v", line 156, characters 38-39 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 157, characters 39-40: +Warning: +File "./tests/test_elaborator.v", line 157, characters 39-40 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_elaborator.v", line 157, characters 41-42: +Warning: +File "./tests/test_elaborator.v", line 157, characters 41-42 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +The argument fun x : ?e => x + ?e1 was closed under 1 binders +old replacement: fun (x : ?e) (y : ?e0) => x - y with +fun (y : ?e1) (x : ?e2) => y + x +new replacement: fun y : ?e0 => x - y with fun y : ?e1 => y + x +it = elpi_subproof + : True +it : True + +it is not universe polymorphic +it is transparent +Expands to: Constant elpi.tests.test_ltac.it +elpi_subproof = I + : True +elpi_subproof : True + +elpi_subproof is not universe polymorphic +elpi_subproof is opaque +Expands to: Constant elpi.tests.test_ltac.elpi_subproof +Closed under the global context +test1 +str hello +str x +test1 +too many arguments +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular2.v", line 10, column 24, characters 326-329:), + attribute elpi.phase (leaf-str interp), + attribute fwd_compat_attr (leaf-str )] +[attribute elpi.loc + (leaf-loc + File "./tests/test_vernacular2.v", line 11, column 0, characters 331-354:), + attribute elpi.phase (leaf-str interp), + attribute fwd_compat_attr (leaf-str )] +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] +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] +trying i = i +trying elpi_ctx_entry_2_ = elpi_ctx_entry_2_ +trying elpi_ctx_entry_1_ = elpi_ctx_entry_1_ /\ p0 = p0 +trying elpi_ctx_entry_1_ = elpi_ctx_entry_1_ /\ p0 = p0 +(true && false)%bool + : bool +natmul R n : ringType_sort R + : ringType_sort R +natmul R n : ringType_sort R + : ringType_sort R +1 + : nat +d + : nat +Goal: +[decl c1 `y` (global (indt «nat»)), decl c0 `x` (global (indt «nat»))] +|- X0 c0 c1 : +app + [global (indt «eq»), global (indt «nat»), + app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]], c1] +(I, 0) +conj : forall [A B : Prop], A -> B -> A /\ B + +conj is not universe polymorphic +Arguments conj [A B]%type_scope _ _ +Expands to: Constructor Coq.Init.Logic.conj +(ex_intro (fun t : Prop => True /\ True /\ t) True (conj I (conj I I))) +[int 1, str x, str a b, + trm + (app + [global (indt «eq»), X0, + app [global (indc «S»), global (indc «O»)], global (indc «O»)])] +Using H ?p of type Q +Using H ?p of type Q +Using p of type P +[trm c0, trm c3, trm (app [c2, c3])] +found P +found P /\ P +Goal: [decl c0 `x` (global (indt «nat»))] |- X0 c0 : +app + [global (indt «eq»), global (indt «nat»), + app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]], global (indc «O»)] +Proof state: + {c0} : decl c0 `x` (global (indt «nat»)) + ?- evar (X1 c0) + (app + [global (indt «eq»), global (indt «nat»), + app + [global (const «Nat.add»), c0, + app [global (indc «S»), global (indc «O»)]], + global (indc «O»)]) (X0 c0) /* suspended on X1, X0 */ +EVARS: + ?X57==[x |- x + 1 = 0] (goal evar) {?Goal} + ?X56==[ |- => fun x : nat => ?Goal] (goal evar) + ?X55==[x |- => nat] (parameter A of eq) + ?X54==[ |- => nat] (type of x) + +SHELF:|| +FUTURE GOALS STACK: + || + +Rocq-Elpi mapping: +RAW: +?X57 <-> c0 \ X1 c0 +ELAB: +?X57 <-> X0 + +#goals = 2 +[nabla c0 \ + nabla c1 \ + seal + (goal [decl c1 `Q` (sort prop), decl c0 `P` (sort prop)] (X0 c0 c1) c0 + (X1 c0 c1) []), + nabla c0 \ + nabla c1 \ + seal + (goal [decl c1 `Q` (sort prop), decl c0 `P` (sort prop)] (X2 c0 c1) c1 + (X3 c0 c1) [])] +(fun (P Q : Prop) (p : P) (q : Q) => conj ?Goal (conj ?Goal0 ?Goal1)) +(fun (P Q : Prop) (p : P) (q : Q) => conj ?Goal0 (conj ?Goal ?Goal0)) +foo = 46 + : nat +bar = (false :: nil)%list + : list bool +baz = (46%nat :: nil)%list + : list nat +File "./examples/tutorial_coq_elpi_tactic.v", line 632, characters 0-22: +Warning: x is already taken, Elpi will make a name up [lib,elpi,default] +File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 32-33: +Warning: +File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 32-33 +A is linear: name it _A (discard) or A_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 40-41: +Warning: +File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 40-41 +B is linear: name it _B (discard) or B_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 14-17: +Warning: +File "./examples/tutorial_coq_elpi_tactic.v", line 742, characters 14-17 +Ctx is linear: name it _Ctx (discard) or Ctx_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_coq_elpi_tactic.v", line 843, characters 44-46: +Warning: +File "./examples/tutorial_coq_elpi_tactic.v", line 843, characters 44-46 +G1 is linear: name it _G1 (discard) or G1_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./examples/tutorial_coq_elpi_tactic.v", line 844, characters 44-46: +Warning: +File "./examples/tutorial_coq_elpi_tactic.v", line 844, characters 44-46 +G2 is linear: name it _G2 (discard) or G2_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +global (indc «O») +app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +This.Is.A.Long.Namespace.stuff = 1 + : nat + = 1 + : 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 +program +[p] + {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: + || + +Rocq-Elpi mapping: +RAW: +?X2 <-> c0 \ X0 c0 +ELAB: +?X2 <-> X1 + +Debug: + {c0} : decl c0 `x` (global (indt «nat»)) + ?- evar (X0 c0) + (prod `_` (global (indt «bool»)) c1 \ global (indt «True»)) + (X1 c0) /* suspended on X0, X1 */ +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) [])] +[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: + T = sort (typ «elpi.tests.test_HOAS.3») + U = «elpi.tests.test_HOAS.3» +Query assignments: + U = «elpi.tests.test_HOAS.4» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.4} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + U = «foo» +Query assignments: + X = c0 \ c1 \ c2 \ +X0 c0 c1 c2 + X3_ = global (indt «nat») +Syntactic constraints: + {c0 c1 c2 c3 c4 c5 c6} : + decl c6 `z` (app [global (const «N»), c5]), + decl c5 `x` (global (indt «nat»)), + decl c4 `a` (global (indt «bool»)) + ?- evar (X0 c4 c5 c6) (X1 c4 c5 c6) (X0 c4 c5 c6) /* suspended on X0 */ + {c0 c1 c2 c3 c4 c5 c6} : + decl c6 `z` (app [global (const «N»), c5]), + decl c5 `x` (global (indt «nat»)), + decl c4 `a` (global (indt «bool»)) + ?- evar (X2 c4 c5 c6) (sort (typ «elpi.tests.test_HOAS.9»)) + (X1 c4 c5 c6) /* suspended on X2, X1 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.9 elpi.tests.test_HOAS.8} |= + Set <= elpi.tests.test_HOAS.8 + elpi.tests.test_HOAS.8 <= elpi.tests.test_HOAS.8 +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α3 := Type + α4 +WEAK CONSTRAINTS: + + +---------------------------------- + {c0 c1} : decl c1 `a` (global (indt «bool»)) + ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ + {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ +EVARS: + ?X10==[ |- Type] (internal placeholder) {?elpi_evar} + ?X9==[a |- ?elpi_evar] (internal placeholder) {?e0} + ?X8==[a |- => ?elpi_evar] (internal placeholder) + +SHELF: +FUTURE GOALS STACK:?X10 +?X9 + +Rocq-Elpi mapping: +RAW: +?X9 <-> c0 \ X2 c0 +?X10 <-> X0 +ELAB: +?X9 <-> X2 +?X10 <-> X1 + +X2 c0 : X1 +Query assignments: + TY = X1 + X = c0 \ c1 \ +X2 c0 +Syntactic constraints: + {c0 c1} : decl c1 `a` (global (indt «bool»)) + ?- evar X0 (sort (typ «elpi.tests.test_HOAS.10»)) X1 /* suspended on X0, X1 */ + {c0 c1} : decl c1 `a` (global (indt «bool»)) ?- evar (X2 c1) X1 (X2 c1) /* suspended on X2 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.10} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α5 +WEAK CONSTRAINTS: + + +Raw term: +app + [global (const «add»), primitive (uint63 2000000003333002), + primitive (uint63 1)] +Nice term: (2000000003333002 + 1)%uint63 +Red: +2000000003333003%uint63 +Raw term: +app + [global (const «add»), primitive (float64 24000000000000), + primitive (float64 1)] +Nice term: 24000000000000 + 1 +Red: 24000000000001 +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 `_elpi_renamed_n_3` (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»)]]] + X10_ = c0 \ c1 \ c2 \ +global (indt «nat») + X4_ = global (indt «nat») + X5_ = c0 \ +global (indt «nat») + X6_ = c0 \ c1 \ +global (indt «nat») + X7_ = c0 \ +global (indt «nat») + X8_ = c0 \ c1 \ +global (indt «nat») + X9_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») +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 `_elpi_renamed_n_2` (global (indt «nat»)) c2 \ + global (indt «nat»)) + [c1, + fun `p` (global (indt «nat»)) c2 \ + app + [global (indc «S»), + app + [fix `plus` 0 + (prod `_elpi_renamed_n_3` (global (indt «nat»)) c3 \ + prod `_elpi_renamed_m_4` (global (indt «nat»)) c4 \ + global (indt «nat»)) c3 \ + fun `_elpi_renamed_n_4` (global (indt «nat»)) c4 \ + fun `_elpi_renamed_m_5` (global (indt «nat»)) c5 \ + match c4 + (fun `_elpi_renamed_n_6` (global (indt «nat»)) c6 \ + global (indt «nat»)) + [c5, + fun `_elpi_renamed_p_6` (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»)]]] + X11_ = global (indt «nat») + X12_ = c0 \ +global (indt «nat») + X13_ = c0 \ c1 \ c2 \ +global (indt «nat») + X14_ = c0 \ c1 \ +global (indt «nat») + X15_ = c0 \ c1 \ c2 \ +global (indt «nat») + X16_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + X17_ = c0 \ c1 \ c2 \ c3 \ c4 \ +global (indt «nat») + X18_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») + X19_ = c0 \ c1 \ c2 \ c3 \ c4 \ +global (indt «nat») + X20_ = c0 \ c1 \ c2 \ c3 \ c4 \ c5 \ c6 \ +global (indt «nat») + X21_ = c0 \ c1 \ c2 \ c3 \ c4 \ c5 \ +global (indt «nat») +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 `_elpi_renamed_n_4` (global (indt «nat»)) c4 \ + global (indt «nat»)) + [c3, + fun `_elpi_renamed_p_4` (global (indt «nat»)) c4 \ + app [global (indc «S»), app [c1, c4, c3]]], c0, + app + [global (indc «S»), app [global (indc «S»), global (indc «O»)]]]]] + X22_ = global (indt «nat») + X23_ = global (indt «nat») + X24_ = c0 \ +global (indt «nat») + X25_ = c0 \ c1 \ +global (indt «nat») + X26_ = c0 \ c1 \ c2 \ +global (indt «nat») + X27_ = c0 \ c1 \ +global (indt «nat») + X28_ = c0 \ c1 \ c2 \ +global (indt «nat») + X29_ = c0 \ c1 \ c2 \ c3 \ c4 \ +global (indt «nat») + X30_ = c0 \ c1 \ c2 \ c3 \ +global (indt «nat») +Query assignments: + C = «Nat.add» + F = TODO + T = app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T1 = app + [global (const «Nat.add»), + app [global (indc «S»), global (indc «O»)], + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] + T2 = app + [global (indc «S»), + app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +Query assignments: + C = «proj1» +Query assignments: + C = «proj1» + P = elpi.tests.test_HOAS.P''.proj1 +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]) +some + (pglobal (const «toto») + «elpi.tests.test_HOAS.23 elpi.tests.test_HOAS.24») +prod `T1` (sort (typ «elpi.tests.test_HOAS.23»)) c0 \ + prod `T2` (sort (typ «elpi.tests.test_HOAS.24»)) c1 \ prod `x` c0 c2 \ c0 +Query assignments: + Body = some + (pglobal (const «toto») + «elpi.tests.test_HOAS.23 elpi.tests.test_HOAS.24») + C = «titi» + Term = prod `T1` (sort (typ «elpi.tests.test_HOAS.23»)) c0 \ + prod `T2` (sort (typ «elpi.tests.test_HOAS.24»)) c1 \ prod `x` c0 c2 \ c0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.24 elpi.tests.test_HOAS.23} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.24 + elpi.tests.test_HOAS.23 +SORTS: + +WEAK CONSTRAINTS: + + +pglobal (const «toto») X0 +pglobal (const «toto») «u1 u2» +toto +Query assignments: + %arg1 = toto + X31_ = X0 + X32_ = «elpi.tests.test_HOAS.27 elpi.tests.test_HOAS.28» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.28 elpi.tests.test_HOAS.27} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.28 elpi.tests.test_HOAS.27} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.28 + elpi.tests.test_HOAS.27 +SORTS: + +WEAK CONSTRAINTS: + + +app + [pglobal (const «t») X0, global (indt «nat»), + pglobal (const «fnat») X1] +app + [pglobal (const «t») «elpi.tests.test_HOAS.33», global (indt «nat»), + pglobal (const «fnat») «»] +Query assignments: + T = app + [pglobal (const «t») «elpi.tests.test_HOAS.33», global (indt «nat»), + pglobal (const «fnat») «»] + Ty = global (indt «nat») + X33_ = «elpi.tests.test_HOAS.33» + X34_ = «» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.33} |= + Set <= elpi.tests.test_HOAS.33 + Set = elpi.tests.test_HOAS.33 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.33} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.33 := Set +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + Arity = prod `T` (sort (typ «elpi.tests.test_HOAS.34»)) c0 \ + sort (typ «elpi.tests.test_HOAS.34») + GRF = indt «F» + I = «elpi.tests.test_HOAS.34» + Ind = «F» + K = [«Build_F»] + KTys = [prod `T` (sort (typ «elpi.tests.test_HOAS.34»)) c0 \ + prod `t` c0 c1 \ app [pglobal (indt «F») «elpi.tests.test_HOAS.34», c0]] + TyF = prod `T` (sort (typ «elpi.tests.test_HOAS.34»)) c0 \ + sort (typ «elpi.tests.test_HOAS.34») +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.34} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.34} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.34 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + Decl = parameter T explicit (sort (typ «elpi.tests.test_HOAS.35»)) c0 \ + record F (sort (typ «elpi.tests.test_HOAS.35»)) Build_F + (field [coercion off, canonical tt] t c0 c1 \ end-record) + GRF = indt «F» + I = «elpi.tests.test_HOAS.35» + Ind = «F» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.35} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.35} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.35 +SORTS: + +WEAK CONSTRAINTS: + + +«elpi.tests.test_HOAS.36» «elpi.tests.test_HOAS.37» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 + SORTS: + + WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} |= + elpi.tests.test_HOAS.36 = elpi.tests.test_HOAS.37 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 := elpi.tests.test_HOAS.37 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.36» + I2 = «elpi.tests.test_HOAS.37» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} |= + elpi.tests.test_HOAS.36 = elpi.tests.test_HOAS.37 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.37 elpi.tests.test_HOAS.36} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.37 + elpi.tests.test_HOAS.36 := elpi.tests.test_HOAS.37 +SORTS: + +WEAK CONSTRAINTS: + + +«elpi.tests.test_HOAS.38» «» +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.38} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.38} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.38 + SORTS: + + WEAK CONSTRAINTS: + + +different universe instance lengths +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.38} |= + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.38} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.38 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + E = different universe instance lengths + GRF = indt «F» + GRfnat = const «fnat» + I1 = «elpi.tests.test_HOAS.38» + I2 = «» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.38} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.38} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.38 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.39» + I2 = «elpi.tests.test_HOAS.39» + U = «elpi.tests.test_HOAS.39» + UL1 = [«elpi.tests.test_HOAS.39»] +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.39} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.39} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.39 +SORTS: + +WEAK CONSTRAINTS: + + +Cannot enforce elpi.tests.test_HOAS.40 = elpi.tests.test_HOAS.41 because +elpi.tests.test_HOAS.40 < elpi.tests.test_HOAS.41 +Query assignments: + E = Cannot enforce elpi.tests.test_HOAS.40 = elpi.tests.test_HOAS.41 because +elpi.tests.test_HOAS.40 < elpi.tests.test_HOAS.41 + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.40» + I2 = «elpi.tests.test_HOAS.41» + L1 = «elpi.tests.test_HOAS.40» + L2 = «elpi.tests.test_HOAS.41» + U1 = «elpi.tests.test_HOAS.40» + U2 = «elpi.tests.test_HOAS.41» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40} |= + elpi.tests.test_HOAS.40 < elpi.tests.test_HOAS.41 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.41 elpi.tests.test_HOAS.40} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.41 + elpi.tests.test_HOAS.40 +SORTS: + +WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} |= + elpi.tests.test_HOAS.44 < elpi.tests.test_HOAS.45 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.45 + elpi.tests.test_HOAS.44 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + GRF = indt «F2» + I1 = «elpi.tests.test_HOAS.44» + I2 = «elpi.tests.test_HOAS.45» + L1 = «elpi.tests.test_HOAS.44» + L2 = «elpi.tests.test_HOAS.45» + U1 = «elpi.tests.test_HOAS.44» + U2 = «elpi.tests.test_HOAS.45» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} |= + elpi.tests.test_HOAS.44 < elpi.tests.test_HOAS.45 + elpi.tests.test_HOAS.44 <= elpi.tests.test_HOAS.45 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.45 elpi.tests.test_HOAS.44} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.45 + elpi.tests.test_HOAS.44 +SORTS: + +WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.47 elpi.tests.test_HOAS.46} |= + elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.47} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.47 + elpi.tests.test_HOAS.46 + SORTS: + + WEAK CONSTRAINTS: + + +Cannot enforce elpi.tests.test_HOAS.47 = elpi.tests.test_HOAS.46 because +elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 +Query assignments: + E = Cannot enforce elpi.tests.test_HOAS.47 = elpi.tests.test_HOAS.46 because +elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 + GRF = indt «F» + I1 = «elpi.tests.test_HOAS.46» + I2 = «elpi.tests.test_HOAS.47» + L1 = «elpi.tests.test_HOAS.46» + L2 = «elpi.tests.test_HOAS.47» + U1 = «elpi.tests.test_HOAS.46» + U2 = «elpi.tests.test_HOAS.47» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.47 elpi.tests.test_HOAS.46} |= + elpi.tests.test_HOAS.46 < elpi.tests.test_HOAS.47 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.47} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.47 + elpi.tests.test_HOAS.46 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + GR = indt «nat» +Query assignments: + GR = indt «F» + I = «elpi.tests.test_HOAS.48» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.48} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.48 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + GR = indt «F» +pglobal (indt «F») «elpi.tests.test_HOAS.50» +Query assignments: + %arg1 = pglobal (indt «F») «elpi.tests.test_HOAS.50» + GR = indt «F» + I = «elpi.tests.test_HOAS.50» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.50} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.50 +SORTS: + +WEAK CONSTRAINTS: + + +«elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.51» +Query assignments: + I = «elpi.tests.test_HOAS.51 elpi.tests.test_HOAS.51» + U = «elpi.tests.test_HOAS.51» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.51} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + +WEAK CONSTRAINTS: + + +Universe constraints: +------------------ +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} |= + elpi.tests.test_HOAS.52 < elpi.tests.test_HOAS.53 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.53 + elpi.tests.test_HOAS.52 + SORTS: + + WEAK CONSTRAINTS: + + +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} |= + elpi.tests.test_HOAS.52 < elpi.tests.test_HOAS.53 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.53 + elpi.tests.test_HOAS.52 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + Body = sort (typ «elpi.tests.test_HOAS.52») + LX = «elpi.tests.test_HOAS.52» + LY = «elpi.tests.test_HOAS.53» + Type = sort (typ «elpi.tests.test_HOAS.53») + UX = «elpi.tests.test_HOAS.52» + UY = «elpi.tests.test_HOAS.53» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} |= + elpi.tests.test_HOAS.52 < elpi.tests.test_HOAS.53 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.53 elpi.tests.test_HOAS.52} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.53 + elpi.tests.test_HOAS.52 +SORTS: + +WEAK CONSTRAINTS: + + +poly@{u u0} : Type@{u0} +(* u u0 |= u < u0 *) + +poly is universe polymorphic +poly is transparent +Expands to: Constant elpi.tests.test_HOAS.poly +poly@{Set +elpi.tests.test_HOAS.54} + : Type@{elpi.tests.test_HOAS.54} +(* {elpi.tests.test_HOAS.54} |= Set < elpi.tests.test_HOAS.54 *) +Box not a defined object. +sort (typ «Set») +Query assignments: + U = «elpi.tests.test_HOAS.55» +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.55} |= Set = elpi.tests.test_HOAS.55 +ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.55} +FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.55 := Set +SORTS: + +WEAK CONSTRAINTS: + + +Inductive tree@{u} (A : Type@{u}) : Type@{max(Set,u)} := + leaf : A -> tree@{u} A | node : A -> list (tree@{u} A) -> tree@{u} A. +(* u |= Set <= list.u0 + u <= list.u0 *) + +Arguments tree A%type_scope +Arguments leaf A%type_scope _ +Arguments node A%type_scope _ _%list_scope +parameter A explicit (sort (typ «elpi.tests.test_HOAS.64»)) c0 \ + inductive tree tt (arity (sort (typ «elpi.tests.test_HOAS.65»))) c1 \ + [constructor leaf (arity (prod `_` c0 c2 \ c1)), + constructor node + (arity + (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] +Universe constraints: UNIVERSES: + {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68 + elpi.tests.test_HOAS.67 elpi.tests.test_HOAS.66 + elpi.tests.test_HOAS.65 elpi.tests.test_HOAS.64} |= + elpi.tests.test_HOAS.64 < elpi.tests.test_HOAS.66 + elpi.tests.test_HOAS.65 < elpi.tests.test_HOAS.67 + Set <= list.u0 + Set <= elpi.tests.test_HOAS.65 + Set <= elpi.tests.test_HOAS.69 + elpi.tests.test_HOAS.64 <= list.u0 + elpi.tests.test_HOAS.64 <= elpi.tests.test_HOAS.65 + elpi.tests.test_HOAS.64 <= elpi.tests.test_HOAS.68 + elpi.tests.test_HOAS.64 <= elpi.tests.test_HOAS.69 + elpi.tests.test_HOAS.65 <= list.u0 + elpi.tests.test_HOAS.65 <= elpi.tests.test_HOAS.68 + elpi.tests.test_HOAS.65 <= elpi.tests.test_HOAS.69 + elpi.tests.test_HOAS.68 <= elpi.tests.test_HOAS.65 + elpi.tests.test_HOAS.69 <= elpi.tests.test_HOAS.65 + ALGEBRAIC UNIVERSES: + {elpi.tests.test_HOAS.64} + FLEXIBLE UNIVERSES: + elpi.tests.test_HOAS.64 + SORTS: + + WEAK CONSTRAINTS: + + +Query assignments: + D = parameter A explicit (sort (typ «M.tree.u0»)) c0 \ + inductive tree tt (arity (sort (typ «M.tree.u1»))) c1 \ + [constructor leaf (arity (prod `_` c0 c2 \ c1)), + constructor node + (arity + (prod `_` c0 c2 \ prod `_` (app [global (indt «list»), c1]) c3 \ c1))] + I = «tree» + X35_ = X0 +Universe constraints: +UNIVERSES: + {elpi.tests.test_HOAS.69 elpi.tests.test_HOAS.68 elpi.tests.test_HOAS.67 + elpi.tests.test_HOAS.66} |= + M.tree.u0 < elpi.tests.test_HOAS.66 + M.tree.u1 < elpi.tests.test_HOAS.67 + Set <= elpi.tests.test_HOAS.69 + M.tree.u0 <= elpi.tests.test_HOAS.68 + M.tree.u0 <= elpi.tests.test_HOAS.69 + M.tree.u1 <= elpi.tests.test_HOAS.68 + M.tree.u1 <= elpi.tests.test_HOAS.69 + elpi.tests.test_HOAS.68 <= M.tree.u1 + elpi.tests.test_HOAS.69 <= M.tree.u1 +ALGEBRAIC UNIVERSES: + {M.tree.u0} +FLEXIBLE UNIVERSES: + M.tree.u0 +SORTS: + +WEAK CONSTRAINTS: + + +File "./tests/test_HOAS.v", line 94, characters 46-61: +Warning: +File "./tests/test_HOAS.v", line 94, characters 46-61 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 101, characters 19-24: +Warning: +File "./tests/test_HOAS.v", line 101, characters 19-24 +X is linear: name it _X (discard) or X_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 127, characters 0-40: +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] +File "./tests/test_HOAS.v", line 130, characters 0-40: +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] +File "./tests/test_HOAS.v", line 306, characters 18-20: +Warning: +File "./tests/test_HOAS.v", line 306, characters 18-20 +Ty is linear: name it _Ty (discard) or Ty_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 320, characters 43-48: +Warning: +File "./tests/test_HOAS.v", line 320, characters 43-48 +Arity is linear: name it _Arity (discard) or Arity_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 320, characters 49-50: +Warning: +File "./tests/test_HOAS.v", line 320, characters 49-50 +K is linear: name it _K (discard) or K_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 320, characters 51-55: +Warning: +File "./tests/test_HOAS.v", line 320, characters 51-55 +KTys is linear: name it _KTys (discard) or KTys_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 316, characters 32-35: +Warning: +File "./tests/test_HOAS.v", line 316, characters 32-35 +TyF is linear: name it _TyF (discard) or TyF_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 467, characters 42-46: +Warning: +File "./tests/test_HOAS.v", line 467, characters 42-46 +Decl is linear: name it _Decl (discard) or Decl_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "coq-builtin.elpi", line 461, characters 50-51: +Warning: +File "coq-builtin.elpi", line 461, characters 50-51 +I is linear: name it _I (discard) or I_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 506, characters 20-22: +Warning: +File "./tests/test_HOAS.v", line 506, characters 20-22 +I2 is linear: name it _I2 (discard) or I2_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 504, characters 23-26: +Warning: +File "./tests/test_HOAS.v", line 504, characters 23-26 +UL1 is linear: name it _UL1 (discard) or UL1_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 558, characters 32-33: +Warning: +File "./tests/test_HOAS.v", line 558, characters 32-33 +I is linear: name it _I (discard) or I_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "coq-builtin.elpi", line 461, characters 50-51: +Warning: +File "coq-builtin.elpi", line 461, characters 50-51 +I is linear: name it _I (discard) or I_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_HOAS.v", line 629, characters 36-37: +Warning: +File "./tests/test_HOAS.v", line 629, characters 36-37 +U is linear: name it _U (discard) or U_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +Foo.x = 3 + : nat +Foo.x = 3 + : nat +Foo.x2 = 4 + : nat +eq_refl : Foo.x = 5 + : Foo.x = 5 +A.B.c : nat + +A.B.c is not universe polymorphic +A.B.c is transparent +Expands to: Constant elpi.apps.NES.tests.test_NES.A_aux_4.A.B.c +A1.B1.d : nat + +A1.B1.d is not universe polymorphic +A1.B1.d is transparent +Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_6.A1.B1.d +A1.B1.c : nat + +A1.B1.c is not universe polymorphic +A1.B1.c is transparent +Expands to: Constant elpi.apps.NES.tests.test_NES.A1_aux_5.A1.B1.c +x = 5 + : nat +x2 = 4 + : nat +B1.c = 1 + : nat +B1.d = 1 + : nat +d = 1 + : nat +A2.B2.f = 2 + : nat +true : bool + : bool +Cats.And.Dogs.x = 42 + : nat Module d3 : d3_Locked @@ -13469,6 +13524,18 @@ Called from Elpi_plugin__Rocq_elpi_vernacular.Compiler.run_and_print in file "src/rocq_elpi_vernacular.ml", line 166, characters 8-38 Called from Elpi_plugin__Rocq_elpi_vernacular.Interp.run_program.(fun) in file "src/rocq_elpi_vernacular.ml", line 557, characters 34-90 +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 _ _ [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, @@ -13869,23 +13936,6 @@ p 3689, p 3690, p 3691, p 3692, p 3693, p 3694, p 3695, p 3696, p 3697, p 3698, p 3699, p 3700, p 3701, p 3702, p 3703, p 3704, p 3705, p 3706, p 3707, p 3708, p 3709, p 3710] -d - : nat -it = elpi_subproof - : True -it : True - -it is not universe polymorphic -it is transparent -Expands to: Constant elpi.tests.test_ltac.it -elpi_subproof = I - : True -elpi_subproof : True - -elpi_subproof is not universe polymorphic -elpi_subproof is opaque -Expands to: Constant elpi.tests.test_ltac.elpi_subproof -Closed under the global context Debug: run 1 {{{ Debug: @@ -13913,7 +13963,7 @@ Debug: rid:0 step:1 gid:5 user:rule:implication = success -Debug: }}} -> (0.007s) +Debug: }}} -> (0.001s) Debug: run 2 {{{ Debug: @@ -14173,7 +14223,7 @@ rid:0 step:8 gid:15 user:rule:backchain:candidates = File "elpi-builtin.elpi", line 34, column 0, characters 373-385: File "elpi-builtin.elpi", line 36, column 0, characters 388-400: -Debug: }}} -> (0.008s) +Debug: }}} -> (0.000s) Debug: select 8 {{{ Debug: @@ -14192,7 +14242,7 @@ Debug: rid:0 step:8 gid:17 user:rule:backchain = success -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: run 9 {{{ Debug: @@ -14448,7 +14498,7 @@ Debug: rid:0 step:19 gid:12 user:rule:backchain:candidates = File "elpi-builtin.elpi", line 83, column 0, characters 1181-1199: -Debug: }}} -> (0.002s) +Debug: }}} -> (0.000s) Debug: select 11 {{{ Debug: @@ -14593,7 +14643,7 @@ rid:0 step:23 gid:26 user:curgoal = ! ! -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: rid:0 step:23 gid:26 user:rule = cut @@ -14687,7 +14737,7 @@ Debug: rid:0 step:24 gid:28 user:rule:backchain = success -Debug: }}} -> (0.001s) +Debug: }}} -> (0.000s) Debug: run 25 {{{ Debug: @@ -14890,7 +14940,7 @@ c1, c6, c8], app [c3, c7, c9]]]]) -Debug: }}} -> (0.006s) +Debug: }}} -> (0.001s) Debug: run 28 {{{ Debug: @@ -15079,7 +15129,7 @@ rid:1 step:359 gid:1040 user:rule:backchain:candidates = File "elpi-builtin.elpi", line 34, column 0, characters 373-385: File "elpi-builtin.elpi", line 36, column 0, characters 388-400: -Debug: }}} -> (0.000s) +Debug: }}} -> (0.001s) Debug: select 269 {{{ Debug: @@ -15226,7 +15276,7 @@ Debug: rid:1 step:363 gid:1037 user:rule:backchain:candidates = File "builtin_stdlib.elpi", line 279, column 0, characters 9290-9316: -Debug: }}} -> (0.001s) +Debug: }}} -> (0.006s) Debug: select 270 {{{ Debug: @@ -15394,7 +15444,7 @@ Debug: rid:1 step:363 gid:1045 user:rule:backchain = success -Debug: }}} -> (0.003s) +Debug: }}} -> (0.007s) Debug: run 364 {{{ Debug: @@ -15624,7 +15674,7 @@ Debug: rid:1 step:367 gid:1049 user:rule:backchain = success -Debug: }}} -> (0.001s) +Debug: }}} -> (0.005s) Debug: run 368 {{{ Debug: @@ -15928,7 +15978,7 @@ Debug: rid:1 step:372 gid:1052 user:rule:builtin = success -Debug: }}} -> (0.001s) +Debug: }}} -> (0.005s) expanded_g = fun T : Type => let X := T in @@ -15938,44 +15988,436 @@ Arguments expanded_g T%type_scope op%function_scope (l s)%list_scope h%bool_scope -test1 -str hello -str x -test1 -too many arguments -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular2.v", line 10, column 24, characters 326-329:), - attribute elpi.phase (leaf-str interp), - attribute fwd_compat_attr (leaf-str )] -[attribute elpi.loc - (leaf-loc - File "./tests/test_vernacular2.v", line 11, column 0, characters 331-354:), - attribute elpi.phase (leaf-str interp), - attribute fwd_compat_attr (leaf-str )] -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] -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] -program -[p] -true : bool - : bool -global (indc «O») -app - [global (indc «S»), - app [global (indc «S»), app [global (indc «S»), global (indc «O»)]]] +normP : +forall {T : Type} {e : T} {op : T -> T -> T} {gamma : list T} {t1 t2 : lang}, +(forall a b c : T, op a (op b c) = op (op a b) c) -> +(forall a : T, op e a = a) -> +(forall a : T, op a e = a) -> +norm t1 = norm t2 -> interp T e op gamma t1 = interp T e op gamma t2 + +normP is not universe polymorphic +Arguments normP {T}%type_scope {e} {op}%function_scope + {gamma}%list_scope {t1 t2} (p1 p2 p3)%function_scope + H +normP is transparent +Expands to: Constant elpi_examples_stdlib.example_reflexive_tactic.normP +(fun x y z t : Z => + normP Z.add_assoc Z.add_0_l Z.add_0_r + (eq_refl + <: + norm (add (add (var 0) (var 1)) (add (add (var 2) zero) (var 3))) = + norm (add (add (var 0) (add (var 1) (var 2))) (var 3)))) +Debug: In environment +x, y, z, t : Z +Unable to unify "var 1" with + "var 0". +Raised at Loc.raise in file "lib/loc.ml", line 101, characters 16-23 +Called from Unification.unify_0_with_initial_metas in file "pretyping/unification.ml", line 1281, characters 13-48 +Re-raised at Exninfo.iraise in file "clib/exninfo.ml", line 81, characters 4-38 +Called from Unification.unify_with_eta in file "pretyping/unification.ml", line 1320, characters 14-48 +Called from Unification.merge_instances in file "pretyping/unification.ml", line 1333, characters 23-64 +Called from Unification.w_merge.w_merge_rec in file "pretyping/unification.ml", line 1554, characters 14-63 +Called from Unification.w_merge in file "pretyping/unification.ml", lines 1608-1610, characters 4-35 +Called from Unification.w_unify_core_0 in file "pretyping/unification.ml", line 1661, characters 12-65 +Called from Clenv.clenv_unify in file "proofs/clenv.ml", line 298, characters 25-73 +Called from Clenv.res_pf.(fun) in file "proofs/clenv.ml", line 771, characters 16-56 +Called from Proofview.Goal.enter.f in file "engine/proofview.ml", line 1136, characters 40-46 +Called from Proofview.Goal.enter.(fun) in file "engine/proofview.ml", line 1141, characters 10-34 + +nth_R = +fun (T1 T2 : Type) (T_R : T1 -> T2 -> Type) (x01 : T1) + (x02 : T2) (x0_R : T_R x01 x02) => +let rec1 := + fix rec (n : nat) (l : list T1) {struct n} : T1 := + match l with + | nil => x01 + | (x :: xs)%list => match n with + | 0 => x + | S m => rec m xs + end + end in +let rec2 := + fix rec (n : nat) (l : list T2) {struct n} : T2 := + match l with + | nil => x02 + | (x :: xs)%list => match n with + | 0 => x + | S m => rec m xs + end + end in +fix rec_R (n1 n2 : nat) (n_R : nat_R n1 n2) {struct n_R} : + forall (l1 : list T1) (l2 : list T2), + list_R T1 T2 T_R l1 l2 -> T_R (rec1 n1 l1) (rec2 n2 l2) := + match + n_R in (nat_R s1 s2) + return + (forall (l1 : list T1) (l2 : list T2), + list_R T1 T2 T_R l1 l2 -> T_R (rec1 s1 l1) (rec2 s2 l2)) + with + | O_R => + let K := O_R in + (fun (n3 n4 : nat) (n_R0 : nat_R n3 n4) (l1 : list T1) + (l2 : list T2) (l_R : list_R T1 T2 T_R l1 l2) => + match + l_R in (list_R _ _ _ l3 l4) + return + (T_R + match l3 with + | nil => x01 + | (x :: xs)%list => + match n3 with + | 0 => x + | S m => rec1 m xs + end + end + match l4 with + | nil => x02 + | (x :: xs)%list => + match n4 with + | 0 => x + | S m => rec2 m xs + end + end) + with + | nil_R _ _ _ => x0_R + | cons_R _ _ _ x1 x2 x_R xs1 xs2 xs_R => + match + n_R0 in (nat_R n5 n6) + return + (T_R match n5 with + | 0 => x1 + | S m => rec1 m xs1 + end match n6 with + | 0 => x2 + | S m => rec2 m xs2 + end) + with + | O_R => x_R + | S_R m1 m2 m_R => rec_R m1 m2 m_R xs1 xs2 xs_R + end + end) 0 0 K + | S_R _1 _2 __R => + let K := S_R _1 _2 __R in + (fun (n3 n4 : nat) (n_R0 : nat_R n3 n4) (l1 : list T1) + (l2 : list T2) (l_R : list_R T1 T2 T_R l1 l2) => + match + l_R in (list_R _ _ _ l3 l4) + return + (T_R + match l3 with + | nil => x01 + | (x :: xs)%list => + match n3 with + | 0 => x + | S m => rec1 m xs + end + end + match l4 with + | nil => x02 + | (x :: xs)%list => + match n4 with + | 0 => x + | S m => rec2 m xs + end + end) + with + | nil_R _ _ _ => x0_R + | cons_R _ _ _ x1 x2 x_R xs1 xs2 xs_R => + match + n_R0 in (nat_R n5 n6) + return + (T_R match n5 with + | 0 => x1 + | S m => rec1 m xs1 + end match n6 with + | 0 => x2 + | S m => rec2 m xs2 + end) + with + | O_R => x_R + | S_R m1 m2 m_R => rec_R m1 m2 m_R xs1 xs2 xs_R + end + end) (S _1) (S _2) K + end + : forall (T1 T2 : Type) (T_R : T1 -> T2 -> Type) (x01 : T1) (x02 : T2), + T_R x01 x02 -> + forall n1 n2 : nat, + nat_R n1 n2 -> + forall (l1 : list T1) (l2 : list T2), + list_R T1 T2 T_R l1 l2 -> T_R (nth T1 x01 n1 l1) (nth T2 x02 n2 l2) + +Arguments nth_R (T1 T2)%type_scope T_R%function_scope + x01 x02 x0_R (n1 n2)%nat_scope n_R (l1 l2)%list_scope + l_R +pred_R = +fun (n1 n2 : nat) (n_R : nat_R n1 n2) => +match + n_R in (nat_R n3 n4) + return + (nat_R match n3 with + | 0 => n1 + | S u => u + end match n4 with + | 0 => n2 + | S u => u + end) +with +| O_R => n_R +| S_R _ _ u_R => u_R +end + : forall n1 n2 : nat, nat_R n1 n2 -> nat_R (Nat.pred n1) (Nat.pred n2) + +Arguments pred_R (n1 n2)%nat_scope n_R +File "./apps/derive/tests/test_param2.v", line 85, characters 0-30: +Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] +Query assignments: + X1 = «x1» + X2 = «x2» + X3 = «x3» +Query assignments: + M = [[mode-ground], [mode-input]] +1 +1 +1.000000 +1.2 +Query assignments: + C1 = «Nat.add» + C2 = «times» + X1 = tt + X2 = ff +Query assignments: + C1 = «x» +Query assignments: + XX = «elpi.tests.test_API2.xx» +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx» +Query assignments: + XX = «elpi.tests.test_API2.xx2» +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx2» +Query assignments: + C1 = «x» + M = «elpi.tests.test_API2.xx3» +Query assignments: + X1_ = X0 + X2_ = 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 +Unfoldable projection definitions: all +Cut: emp +For any goal -> +For xeq -> exact xxx(level 0, pattern 0 = _, id 0) + +Query assignments: + X3_ = «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: + %arg1 = «elpi.tests.test_API2.T» +Query assignments: + GR = const const EXN PRINTING: Not_found +Query assignments: + %arg1 = «elpi.tests.test_API2.F» + %arg2 = «elpi.tests.test_API2.X» +«elpi.tests.test_API2.G» +Query assignments: + G = «elpi.tests.test_API2.G» +Module G : Sig Definition id : X.T -> X.T. End := (F X) +Query assignments: + %arg1 = «elpi.tests.test_API2.F» + %arg2 = «elpi.tests.test_API2.X» +«elpi.tests.test_API2.H» +Query assignments: + H = «elpi.tests.test_API2.H» +Module H : Sig Definition id : nat -> nat. End := (F X) +Query assignments: + %arg1 = «elpi.tests.test_API2.T» +Query assignments: + GR = const const EXN PRINTING: Not_found +Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End +Query assignments: + %arg1 = «elpi.tests.test_API2.FT» + %arg2 = «elpi.tests.test_API2.X» +«elpi.tests.test_API2.GT» +Query assignments: + G = «elpi.tests.test_API2.GT» +Module Type GT = Sig Parameter idT : X.T -> X.T. End +Query assignments: + %arg1 = «elpi.tests.test_API2.FT» + %arg2 = «elpi.tests.test_API2.X» +«elpi.tests.test_API2.HT» +Query assignments: + H = «elpi.tests.test_API2.HT» +Module Type HT = Sig Parameter idT : nat -> nat. End +Query assignments: + L = [«elpi.tests.test_API2.8», «elpi.tests.test_API2.9»] + S = {{ elpi.tests.test_API2.8; elpi.tests.test_API2.9; }} + U = «elpi.tests.test_API2.8» + UV = «elpi.tests.test_API2.8» + V = «elpi.tests.test_API2.9» + VV = «elpi.tests.test_API2.9» +Universe constraints: +UNIVERSES: + {elpi.tests.test_API2.9 elpi.tests.test_API2.8} |= +ALGEBRAIC UNIVERSES: + {elpi.tests.test_API2.9 elpi.tests.test_API2.8} +FLEXIBLE UNIVERSES: + elpi.tests.test_API2.9 + elpi.tests.test_API2.8 +SORTS: + +WEAK CONSTRAINTS: + + +Query assignments: + X10_ = c0 \ +X0 c0 + X11_ = X1 + X12_ = c0 \ +X0 c0 + X13_ = X2 + X14_ = c0 \ +X3 c0 + X15_ = c0 \ c1 \ +X4 c0 c1 + X16_ = X5 + X17_ = c0 \ +X6 c0 + X18_ = c0 \ c1 \ +X7 c0 c1 + X19_ = X8 + X20_ = c0 \ +X9 c0 + X21_ = c0 \ c1 \ +X10 c0 c1 + X22_ = X8 + X4_ = X11 + X5_ = X11 + X6_ = X12 + X7_ = X13 + X8_ = c0 \ +X14 c0 + X9_ = X1 +Syntactic constraints: + evar X8 (sort (typ «elpi.tests.test_API2.25»)) X8 /* suspended on X8 */ + evar X8 (sort (typ «elpi.tests.test_API2.28»)) X8 /* suspended on X8 */ + {c0 c1} : decl c1 `x` (X9 c0), decl c0 `z` X8 + ?- evar (X10 c0 c1) (sort (typ «elpi.tests.test_API2.27»)) (X10 c0 c1) /* suspended on X10 */ + {c0} : decl c0 `z` X8 + ?- evar (X9 c0) (sort (typ «elpi.tests.test_API2.26»)) (X9 c0) /* suspended on X9 */ + {c0 c1} : decl c1 `x` (X6 c0), decl c0 `z` X5 + ?- evar (X7 c0 c1) (sort (typ «elpi.tests.test_API2.24»)) (X7 c0 c1) /* suspended on X7 */ + {c0} : decl c0 `z` X5 + ?- evar (X6 c0) (sort (typ «elpi.tests.test_API2.23»)) (X6 c0) /* suspended on X6 */ + evar (X5) (sort (typ «elpi.tests.test_API2.22»)) (X5) /* suspended on X5 */ + {c0 c1} : decl c1 `x` (X3 c0), decl c0 `z` X2 + ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API2.21»)) (X4 c0 c1) /* suspended on X4 */ + {c0} : decl c0 `z` X2 + ?- evar (X3 c0) (sort (typ «elpi.tests.test_API2.20»)) (X3 c0) /* suspended on X3 */ + evar (X2) (sort (typ «elpi.tests.test_API2.19»)) (X2) /* suspended on X2 */ + evar X1 (sort (typ «elpi.tests.test_API2.15»)) X1 /* suspended on X1 */ + evar X1 (sort (typ «elpi.tests.test_API2.17»)) X1 /* suspended on X1 */ + {c0} : decl c0 `x` X1 + ?- evar (X0 c0) (sort (typ «elpi.tests.test_API2.16»)) (X0 c0) /* suspended on X0 */ + {c0} : decl c0 `x` X1 + ?- evar (X0 c0) (sort (typ «elpi.tests.test_API2.18»)) (X0 c0) /* suspended on X0 */ + {c0} : decl c0 `x` X13 + ?- evar (X14 c0) (sort (typ «elpi.tests.test_API2.14»)) (X14 c0) /* suspended on X14 */ + evar (X13) (sort (typ «elpi.tests.test_API2.13»)) (X13) /* suspended on X13 */ + evar (X12) (sort (typ «elpi.tests.test_API2.12»)) (X12) /* suspended on X12 */ + evar X11 (sort (typ «elpi.tests.test_API2.10»)) X11 /* suspended on X11 */ + evar X11 (sort (typ «elpi.tests.test_API2.11»)) X11 /* suspended on X11 */ +Universe constraints: +UNIVERSES: + {elpi.tests.test_API2.28 elpi.tests.test_API2.27 elpi.tests.test_API2.26 + elpi.tests.test_API2.25 elpi.tests.test_API2.24 elpi.tests.test_API2.23 + elpi.tests.test_API2.22 elpi.tests.test_API2.21 elpi.tests.test_API2.20 + elpi.tests.test_API2.19 elpi.tests.test_API2.18 elpi.tests.test_API2.17 + elpi.tests.test_API2.16 elpi.tests.test_API2.15 elpi.tests.test_API2.14 + elpi.tests.test_API2.13 elpi.tests.test_API2.12 elpi.tests.test_API2.11 + elpi.tests.test_API2.10} |= +ALGEBRAIC UNIVERSES: + {} +FLEXIBLE UNIVERSES: + +SORTS: + α6 + α7 + α8 + α9 + α10 + α11 + α12 + α13 + α14 + α15 + α16 + α17 + α18 + α19 + α20 + α21 + α22 + α23 + α24 +WEAK CONSTRAINTS: + + +File "./tests/test_API2.v", line 127, characters 0-16: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] +File "./tests/test_API2.v", line 135, characters 0-14: +Warning: Option Foo Bar is deprecated. elpi +[deprecated-option,deprecated,default] +File "./tests/test_API2.v", line 216, characters 23-24: +Warning: +File "./tests/test_API2.v", line 216, characters 23-24 +M is linear: name it _M (discard) or M_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API2.v", line 224, characters 31-32: +Warning: +File "./tests/test_API2.v", line 224, characters 31-32 +T is linear: name it _T (discard) or T_ (fresh variable) +[elpi.linear-variable,elpi.typecheck,elpi,default] +File "./tests/test_API2.v", line 372, characters 0-228: +Warning: +Undeclared globals: +- File "./tests/test_API2.v", line 373, column 2, characters 8777-8787: test. +Please add the following text to your program: +type test term -> term -> prop. +[elpi.missing-types,elpi.typecheck,elpi,default] +ok Query assignments: BO = fix `add` 0 (prod `n` (global (indt «nat»)) c0 \ @@ -17736,7 +18178,7 @@ RingMicromega.PsatzZ; RMicromega.CPow; Field_theory.FEinv; Tauto.IFF; Ring_polynom.PEpow; RMicromega.CInv; Field_theory.FEdiv; Tauto.EQ; RMicromega.COpp; Field_theory.FEpow; }} - T = 0.857754 + T = 2.741677 Query assignments: %arg1 = 4 S = {{ Nat.add; eq; nat; O; }} @@ -17890,412 +18332,6 @@ File "./tests-stdlib/test_API_env.v", line 293, characters 30-32 UR is linear: name it _UR (discard) or UR_ (fresh variable) [elpi.linear-variable,elpi.typecheck,elpi,default] -Query assignments: - X1 = «x1» - X2 = «x2» - X3 = «x3» -Query assignments: - M = [[mode-ground], [mode-input]] -1 -1 -1.000000 -1.2 -Query assignments: - C1 = «Nat.add» - C2 = «times» - X1 = tt - X2 = ff -Query assignments: - C1 = «x» -Query assignments: - XX = «elpi.tests.test_API2.xx» -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx» -Query assignments: - XX = «elpi.tests.test_API2.xx2» -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx2» -Query assignments: - C1 = «x» - M = «elpi.tests.test_API2.xx3» -Query assignments: - X1_ = X0 - X2_ = 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 -Unfoldable projection definitions: all -Cut: emp -For any goal -> -For xeq -> exact xxx(level 0, pattern 0 = _, id 0) - -Query assignments: - X3_ = «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: - %arg1 = «elpi.tests.test_API2.T» -Query assignments: - GR = const const EXN PRINTING: Not_found -Query assignments: - %arg1 = «elpi.tests.test_API2.F» - %arg2 = «elpi.tests.test_API2.X» -«elpi.tests.test_API2.G» -Query assignments: - G = «elpi.tests.test_API2.G» -Module G : Sig Definition id : X.T -> X.T. End := (F X) -Query assignments: - %arg1 = «elpi.tests.test_API2.F» - %arg2 = «elpi.tests.test_API2.X» -«elpi.tests.test_API2.H» -Query assignments: - H = «elpi.tests.test_API2.H» -Module H : Sig Definition id : nat -> nat. End := (F X) -Query assignments: - %arg1 = «elpi.tests.test_API2.T» -Query assignments: - GR = const const EXN PRINTING: Not_found -Module Type FT = Funsig (P:T) Sig Parameter idT : P.T -> P.T. End -Query assignments: - %arg1 = «elpi.tests.test_API2.FT» - %arg2 = «elpi.tests.test_API2.X» -«elpi.tests.test_API2.GT» -Query assignments: - G = «elpi.tests.test_API2.GT» -Module Type GT = Sig Parameter idT : X.T -> X.T. End -Query assignments: - %arg1 = «elpi.tests.test_API2.FT» - %arg2 = «elpi.tests.test_API2.X» -«elpi.tests.test_API2.HT» -Query assignments: - H = «elpi.tests.test_API2.HT» -Module Type HT = Sig Parameter idT : nat -> nat. End -Query assignments: - L = [«elpi.tests.test_API2.8», «elpi.tests.test_API2.9»] - S = {{ elpi.tests.test_API2.8; elpi.tests.test_API2.9; }} - U = «elpi.tests.test_API2.8» - UV = «elpi.tests.test_API2.8» - V = «elpi.tests.test_API2.9» - VV = «elpi.tests.test_API2.9» -Universe constraints: -UNIVERSES: - {elpi.tests.test_API2.9 elpi.tests.test_API2.8} |= -ALGEBRAIC UNIVERSES: - {elpi.tests.test_API2.9 elpi.tests.test_API2.8} -FLEXIBLE UNIVERSES: - elpi.tests.test_API2.9 - elpi.tests.test_API2.8 -SORTS: - -WEAK CONSTRAINTS: - - -Query assignments: - X10_ = c0 \ -X0 c0 - X11_ = X1 - X12_ = c0 \ -X0 c0 - X13_ = X2 - X14_ = c0 \ -X3 c0 - X15_ = c0 \ c1 \ -X4 c0 c1 - X16_ = X5 - X17_ = c0 \ -X6 c0 - X18_ = c0 \ c1 \ -X7 c0 c1 - X19_ = X8 - X20_ = c0 \ -X9 c0 - X21_ = c0 \ c1 \ -X10 c0 c1 - X22_ = X8 - X4_ = X11 - X5_ = X11 - X6_ = X12 - X7_ = X13 - X8_ = c0 \ -X14 c0 - X9_ = X1 -Syntactic constraints: - evar X8 (sort (typ «elpi.tests.test_API2.25»)) X8 /* suspended on X8 */ - evar X8 (sort (typ «elpi.tests.test_API2.28»)) X8 /* suspended on X8 */ - {c0 c1} : decl c1 `x` (X9 c0), decl c0 `z` X8 - ?- evar (X10 c0 c1) (sort (typ «elpi.tests.test_API2.27»)) (X10 c0 c1) /* suspended on X10 */ - {c0} : decl c0 `z` X8 - ?- evar (X9 c0) (sort (typ «elpi.tests.test_API2.26»)) (X9 c0) /* suspended on X9 */ - {c0 c1} : decl c1 `x` (X6 c0), decl c0 `z` X5 - ?- evar (X7 c0 c1) (sort (typ «elpi.tests.test_API2.24»)) (X7 c0 c1) /* suspended on X7 */ - {c0} : decl c0 `z` X5 - ?- evar (X6 c0) (sort (typ «elpi.tests.test_API2.23»)) (X6 c0) /* suspended on X6 */ - evar (X5) (sort (typ «elpi.tests.test_API2.22»)) (X5) /* suspended on X5 */ - {c0 c1} : decl c1 `x` (X3 c0), decl c0 `z` X2 - ?- evar (X4 c0 c1) (sort (typ «elpi.tests.test_API2.21»)) (X4 c0 c1) /* suspended on X4 */ - {c0} : decl c0 `z` X2 - ?- evar (X3 c0) (sort (typ «elpi.tests.test_API2.20»)) (X3 c0) /* suspended on X3 */ - evar (X2) (sort (typ «elpi.tests.test_API2.19»)) (X2) /* suspended on X2 */ - evar X1 (sort (typ «elpi.tests.test_API2.15»)) X1 /* suspended on X1 */ - evar X1 (sort (typ «elpi.tests.test_API2.17»)) X1 /* suspended on X1 */ - {c0} : decl c0 `x` X1 - ?- evar (X0 c0) (sort (typ «elpi.tests.test_API2.16»)) (X0 c0) /* suspended on X0 */ - {c0} : decl c0 `x` X1 - ?- evar (X0 c0) (sort (typ «elpi.tests.test_API2.18»)) (X0 c0) /* suspended on X0 */ - {c0} : decl c0 `x` X13 - ?- evar (X14 c0) (sort (typ «elpi.tests.test_API2.14»)) (X14 c0) /* suspended on X14 */ - evar (X13) (sort (typ «elpi.tests.test_API2.13»)) (X13) /* suspended on X13 */ - evar (X12) (sort (typ «elpi.tests.test_API2.12»)) (X12) /* suspended on X12 */ - evar X11 (sort (typ «elpi.tests.test_API2.10»)) X11 /* suspended on X11 */ - evar X11 (sort (typ «elpi.tests.test_API2.11»)) X11 /* suspended on X11 */ -Universe constraints: -UNIVERSES: - {elpi.tests.test_API2.28 elpi.tests.test_API2.27 elpi.tests.test_API2.26 - elpi.tests.test_API2.25 elpi.tests.test_API2.24 elpi.tests.test_API2.23 - elpi.tests.test_API2.22 elpi.tests.test_API2.21 elpi.tests.test_API2.20 - elpi.tests.test_API2.19 elpi.tests.test_API2.18 elpi.tests.test_API2.17 - elpi.tests.test_API2.16 elpi.tests.test_API2.15 elpi.tests.test_API2.14 - elpi.tests.test_API2.13 elpi.tests.test_API2.12 elpi.tests.test_API2.11 - elpi.tests.test_API2.10} |= -ALGEBRAIC UNIVERSES: - {} -FLEXIBLE UNIVERSES: - -SORTS: - α6 - α7 - α8 - α9 - α10 - α11 - α12 - α13 - α14 - α15 - α16 - α17 - α18 - α19 - α20 - α21 - α22 - α23 - α24 -WEAK CONSTRAINTS: - - -File "./tests/test_API2.v", line 127, characters 0-16: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] -File "./tests/test_API2.v", line 135, characters 0-14: -Warning: Option Foo Bar is deprecated. elpi -[deprecated-option,deprecated,default] -File "./tests/test_API2.v", line 216, characters 23-24: -Warning: -File "./tests/test_API2.v", line 216, characters 23-24 -M is linear: name it _M (discard) or M_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API2.v", line 224, characters 31-32: -Warning: -File "./tests/test_API2.v", line 224, characters 31-32 -T is linear: name it _T (discard) or T_ (fresh variable) -[elpi.linear-variable,elpi.typecheck,elpi,default] -File "./tests/test_API2.v", line 372, characters 0-228: -Warning: -Undeclared globals: -- File "./tests/test_API2.v", line 373, column 2, characters 8777-8787: test. -Please add the following text to your program: -type test term -> term -> prop. -[elpi.missing-types,elpi.typecheck,elpi,default] -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 _ _ -nth_R = -fun (T1 T2 : Type) (T_R : T1 -> T2 -> Type) (x01 : T1) - (x02 : T2) (x0_R : T_R x01 x02) => -let rec1 := - fix rec (n : nat) (l : list T1) {struct n} : T1 := - match l with - | nil => x01 - | (x :: xs)%list => match n with - | 0 => x - | S m => rec m xs - end - end in -let rec2 := - fix rec (n : nat) (l : list T2) {struct n} : T2 := - match l with - | nil => x02 - | (x :: xs)%list => match n with - | 0 => x - | S m => rec m xs - end - end in -fix rec_R (n1 n2 : nat) (n_R : nat_R n1 n2) {struct n_R} : - forall (l1 : list T1) (l2 : list T2), - list_R T1 T2 T_R l1 l2 -> T_R (rec1 n1 l1) (rec2 n2 l2) := - match - n_R in (nat_R s1 s2) - return - (forall (l1 : list T1) (l2 : list T2), - list_R T1 T2 T_R l1 l2 -> T_R (rec1 s1 l1) (rec2 s2 l2)) - with - | O_R => - let K := O_R in - (fun (n3 n4 : nat) (n_R0 : nat_R n3 n4) (l1 : list T1) - (l2 : list T2) (l_R : list_R T1 T2 T_R l1 l2) => - match - l_R in (list_R _ _ _ l3 l4) - return - (T_R - match l3 with - | nil => x01 - | (x :: xs)%list => - match n3 with - | 0 => x - | S m => rec1 m xs - end - end - match l4 with - | nil => x02 - | (x :: xs)%list => - match n4 with - | 0 => x - | S m => rec2 m xs - end - end) - with - | nil_R _ _ _ => x0_R - | cons_R _ _ _ x1 x2 x_R xs1 xs2 xs_R => - match - n_R0 in (nat_R n5 n6) - return - (T_R match n5 with - | 0 => x1 - | S m => rec1 m xs1 - end match n6 with - | 0 => x2 - | S m => rec2 m xs2 - end) - with - | O_R => x_R - | S_R m1 m2 m_R => rec_R m1 m2 m_R xs1 xs2 xs_R - end - end) 0 0 K - | S_R _1 _2 __R => - let K := S_R _1 _2 __R in - (fun (n3 n4 : nat) (n_R0 : nat_R n3 n4) (l1 : list T1) - (l2 : list T2) (l_R : list_R T1 T2 T_R l1 l2) => - match - l_R in (list_R _ _ _ l3 l4) - return - (T_R - match l3 with - | nil => x01 - | (x :: xs)%list => - match n3 with - | 0 => x - | S m => rec1 m xs - end - end - match l4 with - | nil => x02 - | (x :: xs)%list => - match n4 with - | 0 => x - | S m => rec2 m xs - end - end) - with - | nil_R _ _ _ => x0_R - | cons_R _ _ _ x1 x2 x_R xs1 xs2 xs_R => - match - n_R0 in (nat_R n5 n6) - return - (T_R match n5 with - | 0 => x1 - | S m => rec1 m xs1 - end match n6 with - | 0 => x2 - | S m => rec2 m xs2 - end) - with - | O_R => x_R - | S_R m1 m2 m_R => rec_R m1 m2 m_R xs1 xs2 xs_R - end - end) (S _1) (S _2) K - end - : forall (T1 T2 : Type) (T_R : T1 -> T2 -> Type) (x01 : T1) (x02 : T2), - T_R x01 x02 -> - forall n1 n2 : nat, - nat_R n1 n2 -> - forall (l1 : list T1) (l2 : list T2), - list_R T1 T2 T_R l1 l2 -> T_R (nth T1 x01 n1 l1) (nth T2 x02 n2 l2) - -Arguments nth_R (T1 T2)%type_scope T_R%function_scope - x01 x02 x0_R (n1 n2)%nat_scope n_R (l1 l2)%list_scope - l_R -pred_R = -fun (n1 n2 : nat) (n_R : nat_R n1 n2) => -match - n_R in (nat_R n3 n4) - return - (nat_R match n3 with - | 0 => n1 - | S u => u - end match n4 with - | 0 => n2 - | S u => u - end) -with -| O_R => n_R -| S_R _ _ u_R => u_R -end - : forall n1 n2 : nat, nat_R n1 n2 -> nat_R (Nat.pred n1) (Nat.pred n2) - -Arguments pred_R (n1 n2)%nat_scope n_R -File "./apps/derive/tests/test_param2.v", line 85, characters 0-30: -Warning: Not a truly recursive fixpoint. [non-recursive,fixpoints,default] -ok All the remaining goals are on the shelf. 1 goal @@ -18326,62 +18362,10 @@ Normalizing app [global (indt «nat2»), global (const «Nat.succ»)] Normalizing app [global (indt «nat2»), global (indc «S»)] Normalizing app [global (indt «nat2»), global (const «Nat.succ»)] -Debug: -Calling typeclass resolution with flags: depth = ∞,unique = false,fail = true -Debug: 1: looking for (C ?i) with backtracking -Debug: 1.1: exact i2 on (C ?i), 0 subgoal(s) -Debug: 2: looking for (E 2) without backtracking -Debug: 2: no match for (E 2), 0 possibilities -Debug: 1.2: exact i1 on (C ?i), 0 subgoal(s) -Debug: 2: looking for (E 1) without backtracking -Debug: 2.1: exact e1 on (E 1), 0 subgoal(s) -Debug: -Calling typeclass resolution with flags: depth = ∞,unique = false,fail = true -Debug: 1: looking for (C ?i) with backtracking -Debug: 1.1: exact i2 on (C ?i), 0 subgoal(s) -Debug: -Calling typeclass resolution with flags: depth = ∞,unique = false,fail = true -Debug: 1: looking for (E 2) without backtracking -Debug: 1: no match for (E 2), 0 possibilities -Debug: 1: looking for (C ?i) with backtracking -Debug: 1.1: exact i2 on (C ?i), 0 subgoal(s) -Debug: 2: looking for (E 2) without backtracking -Debug: 2: no match for (E 2), 0 possibilities -Debug: 1.2: exact i1 on (C ?i), 0 subgoal(s) -Debug: 2: looking for (E 1) without backtracking -Debug: 2.1: exact e1 on (E 1), 0 subgoal(s) -[seal (goal [] (X0) (app [global (indt «C»), X1]) (X2) []), - seal (goal [] (X3) (app [global (indt «E»), X1]) (X4) [])] -Goal is C ?i -Solution for C 2 is i2 -Goal is E 2 -Solution for C 1 is i1 -Goal is E 1 -Solution for E 1 is e1 [TC] For indt «C» : elpi predicate : tc-C search mode is : tc.deterministic modes are : [o, o] -File "./apps/tc/tests/test_tc_declare.v", line 8, characters 2-36: -Warning: -This command does not fully mirror the watned behavior if the class has methods -with implicit arguments (those implicits will be neglected) -[[TC] Warning,TC.Declare,elpi,default] -File "./apps/tc/tests/test_tc_declare.v", line 20, characters 2-53: -Warning: -This command does not fully mirror the watned behavior if the class has methods -with implicit arguments (those implicits will be neglected) -[[TC] Warning,TC.Declare,elpi,default] -File "./apps/tc/tests/test_tc_declare.v", line 50, characters 2-47: -Warning: -This command does not fully mirror the watned behavior if the class has methods -with implicit arguments (those implicits will be neglected) -[[TC] Warning,TC.Declare,elpi,default] -File "./apps/tc/tests/test_tc_declare.v", line 63, characters 2-51: -Warning: -This command does not fully mirror the watned behavior if the class has methods -with implicit arguments (those implicits will be neglected) -[[TC] Warning,TC.Declare,elpi,default] In tc-A In tc-A In tc-B @@ -18414,6 +18398,38 @@ WEAK CONSTRAINTS: +Debug: +Calling typeclass resolution with flags: depth = ∞,unique = false,fail = true +Debug: 1: looking for (C ?i) with backtracking +Debug: 1.1: exact i2 on (C ?i), 0 subgoal(s) +Debug: 2: looking for (E 2) without backtracking +Debug: 2: no match for (E 2), 0 possibilities +Debug: 1.2: exact i1 on (C ?i), 0 subgoal(s) +Debug: 2: looking for (E 1) without backtracking +Debug: 2.1: exact e1 on (E 1), 0 subgoal(s) +Debug: +Calling typeclass resolution with flags: depth = ∞,unique = false,fail = true +Debug: 1: looking for (C ?i) with backtracking +Debug: 1.1: exact i2 on (C ?i), 0 subgoal(s) +Debug: +Calling typeclass resolution with flags: depth = ∞,unique = false,fail = true +Debug: 1: looking for (E 2) without backtracking +Debug: 1: no match for (E 2), 0 possibilities +Debug: 1: looking for (C ?i) with backtracking +Debug: 1.1: exact i2 on (C ?i), 0 subgoal(s) +Debug: 2: looking for (E 2) without backtracking +Debug: 2: no match for (E 2), 0 possibilities +Debug: 1.2: exact i1 on (C ?i), 0 subgoal(s) +Debug: 2: looking for (E 1) without backtracking +Debug: 2.1: exact e1 on (E 1), 0 subgoal(s) +[seal (goal [] (X0) (app [global (indt «C»), X1]) (X2) []), + seal (goal [] (X3) (app [global (indt «E»), X1]) (X4) [])] +Goal is C ?i +Solution for C 2 is i2 +Goal is E 2 +Solution for C 1 is i1 +Goal is E 1 +Solution for E 1 is e1 ((fun (A : Type) (f : Type -> Type) (H : forall x : Type, Y (f x)) => ex_intro (fun g : Type -> Type => Ex g A /\ g nat = g bool) f (conj (Inst2 A f H) ?Goal)) @@ -18437,13 +18453,6 @@ ============================ (fun H0 : Type => f ?e0@{T:=H0}) nat = (fun H0 : Type => f ?e0@{T:=H0}) bool -Now click "Start watching" in the Elpi Trace Browser panel and then execute -the Command/Tactic/Query you want to trace. Also try "F1 Elpi". -(fun H : C Q => - ex_intro (fun T : Type -> Type => forall R : Type -> Type, C R -> C T) Q - (fun (R : Type -> Type) (_ : C R) => let H1 : C Q := H in H1)) -Now click "Start watching" in the Elpi Trace Browser panel and then execute -the Command/Tactic/Query you want to trace. Also try "F1 Elpi". Instances list for indt «Eqb» is: const «eqBool» with locality [] const «eqProd» with locality [] @@ -18475,15 +18484,42 @@ Instances list for indt «DecidableClass.Decidable» is: const «Decidable_eq_bool» with locality [] const «DecidableClass.Decidable_not» with locality [] +File "./apps/tc/tests/test_tc_declare.v", line 8, characters 2-36: +Warning: +This command does not fully mirror the watned behavior if the class has methods +with implicit arguments (those implicits will be neglected) +[[TC] Warning,TC.Declare,elpi,default] +File "./apps/tc/tests/test_tc_declare.v", line 20, characters 2-53: +Warning: +This command does not fully mirror the watned behavior if the class has methods +with implicit arguments (those implicits will be neglected) +[[TC] Warning,TC.Declare,elpi,default] +File "./apps/tc/tests/test_tc_declare.v", line 50, characters 2-47: +Warning: +This command does not fully mirror the watned behavior if the class has methods +with implicit arguments (those implicits will be neglected) +[[TC] Warning,TC.Declare,elpi,default] +File "./apps/tc/tests/test_tc_declare.v", line 63, characters 2-51: +Warning: +This command does not fully mirror the watned behavior if the class has methods +with implicit arguments (those implicits will be neglected) +[[TC] Warning,TC.Declare,elpi,default] +Now click "Start watching" in the Elpi Trace Browser panel and then execute +the Command/Tactic/Query you want to trace. Also try "F1 Elpi". +(fun H : C Q => + ex_intro (fun T : Type -> Type => forall R : Type -> Type, C R -> C T) Q + (fun (R : Type -> Type) (_ : C R) => let H1 : C Q := H in H1)) +Now click "Start watching" in the Elpi Trace Browser panel and then execute +the Command/Tactic/Query you want to trace. Also try "F1 Elpi". +File "./apps/eltac/tests-stdlib/test_injection.v", line 15, characters 0-15: +Warning: Using Vector.t is known to be technically difficult, see +. +[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default] Query assignments: S = app [global (const «IsAnimal»), global (indc «Fly»), global (const «dove»)] Query assignments: S = X0 -File "./apps/eltac/tests-stdlib/test_injection.v", line 15, characters 0-15: -Warning: Using Vector.t is known to be technically difficult, see -. -[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default] Received the following event [str new_instance, str I4, str A, str Export, int -1] Query assignments: @@ -19246,14 +19282,14 @@ There is an hint extern in the typeclass db: (*external*) (reflexive_proxy_tac A R) [elpi.TC.hints,elpi,default] -Debug: [elpitime] Elpi: get_and_compile 0.0001 -Debug: [TC] - Time of instance search is 0.000100 -Debug: [TC] - Time of refine.typecheck is 0.000236 +Debug: [elpitime] Elpi: get_and_compile 0.0002 +Debug: [TC] - Time of instance search is 0.000136 +Debug: [TC] - Time of refine.typecheck is 0.000336 Debug: [elpitime] - Elpi: query-compilation:0.0001 static-check:0.0000 optimization:0.0001 runtime:0.0020 (with success) + Elpi: query-compilation:0.0001 static-check:0.0000 optimization:0.0001 runtime:0.0033 (with success) -Finished transaction in 0.002 secs (0.002u,0.s) (successful) +Finished transaction in 0.004 secs (0.004u,0.s) (successful) Query assignments: T = c0 \ prod `c` X0 c1 \ @@ -19272,7 +19308,7 @@ X3_ = X2 X4_ = X3 X5_ = X4 -Finished transaction in 0.067 secs (0.067u,0.s) (successful) +Finished transaction in 0.195 secs (0.075u,0.s) (successful) Query assignments: A = c0 \ c0 @@ -19574,9 +19610,9 @@ peano.eqb_OK is opaque Expands to: Constant elpi.apps.derive.examples.readme.peano.eqb_OK Derivation param1 on const «Nat.add» -Derivation param1 on const «Nat.add» took 0.003194 +Derivation param1 on const «Nat.add» took 0.007259 Derivation param2 on const «Nat.add» -Derivation param2 on const «Nat.add» took 0.003807 +Derivation param2 on const «Nat.add» took 0.009390 Derivation eqb-alias on const «Nat.add» Derivation eqb-alias on const «Nat.add» failed, continuing Derivation eqbcorrect-alias on const «Nat.add» @@ -19585,6 +19621,397 @@ 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) +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.003693 +Derivation lens on indt «rtree» +Derivation lens on indt «rtree» failed, continuing +Derivation param1 on indt «rtree» +Derivation param1 on indt «rtree» took 0.010938 +Derivation param2 on indt «rtree» +Derivation param2 on indt «rtree» took 0.029901 +Derivation tag on indt «rtree» +Derivation tag on indt «rtree» took 0.010147 +Derivation eqType_ast on indt «rtree» +Derivation eqType_ast on indt «rtree» took 0.000770 +Derivation lens_laws on indt «rtree» +Derivation lens_laws on indt «rtree» took 0.000094 +Derivation param1_congr on indt «rtree» +Derivation param1_congr on indt «rtree» took 0.004267 +Derivation param1_inhab on indt «rtree» +Derivation param1_inhab on indt «rtree» took 0.003836 +Derivation param1_functor on indt «rtree» +Derivation param1_functor on indt «rtree» took 0.009438 +Derivation fields on indt «rtree» +Derivation fields on indt «rtree» took 0.035024 +Derivation param1_trivial on indt «rtree» +Derivation param1_trivial on indt «rtree» took 0.337161 +Derivation induction on indt «rtree» +Derivation induction on indt «rtree» took 0.006561 +Derivation eqb on indt «rtree» +Derivation eqb on indt «rtree» took 0.024910 +Derivation eqbcorrect on indt «rtree» +Derivation eqbcorrect on indt «rtree» took 0.063706 +Derivation eqbOK on indt «rtree» +Derivation eqbOK on indt «rtree» took 0.002330 +Done +rtree.induction +: +forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), +(forall a : A, PA a -> P (Leaf A a)) -> +(forall l : tickle (rtree A), tickle.is_tickle (rtree A) P l -> P (Node A l)) -> +forall x : rtree A, rtree.is_rtree A PA x -> P x + : forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), + (forall a : A, PA a -> P (Leaf A a)) -> + (forall l : tickle (rtree A), + tickle.is_tickle (rtree A) P l -> P (Node A l)) -> + forall x : rtree A, rtree.is_rtree A PA x -> P x +Starting module Box +Declaring inductive +parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.387»)) + c0 \ + record Box (sort (typ «elpi.apps.derive.examples.usage.388»)) Build_Box + (field [coercion off, canonical tt] contents c0 c1 \ + field [coercion off, canonical tt] tag (global (indt «nat»)) c2 \ + end-record) +Deriving +Skipping derivation map on indt «Box» since the user did not select it +Derivation lens on indt «Box» +Derivation lens on indt «Box» took 0.006308 +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» +Derivation tag on indt «Box» took 0.002335 +Derivation eqType_ast on indt «Box» +Derivation eqType_ast on indt «Box» took 0.000574 +Derivation lens_laws on indt «Box» +Derivation lens_laws on indt «Box» took 0.023658 +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.009619 +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.006780 +Skipping derivation eqbcorrect on indt «Box» +since the user did not select it +Skipping derivation eqbOK on indt «Box» since the user did not select it +Done +Box.eqb : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool + : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool +@Box._tag : forall A : Type, Lens (Box A) (Box A) nat nat + : forall A : Type, Lens (Box A) (Box A) nat nat +Box._tag_set_set +: +forall (A : Type) (r : Box A) (y x : nat), +set Box._tag x (set Box._tag y r) = set Box._tag x r + : forall (A : Type) (r : Box A) (y x : nat), + set Box._tag x (set Box._tag y r) = set Box._tag x r +Box._tag_contents_exchange +: +forall (A : Type) (r : Box A) (x : nat) (y : A), +set Box._tag x (set Box._contents y r) = +set Box._contents y (set Box._tag x r) + : forall (A : Type) (r : Box A) (x : nat) (y : A), + set Box._tag x (set Box._contents y r) = + set Box._contents y (set Box._tag x r) +nat_eqb_OK : forall x y : nat, reflect (x = y) (nat_eqb x y) + : forall x y : nat, reflect (x = y) (nat_eqb x y) +Derivation map on indt «a» +Derivation map on indt «a» took 0.001521 +Derivation lens on indt «a» +Derivation lens on indt «a» failed, continuing +Derivation param1 on indt «a» +Derivation param1 on indt «a» took 0.003941 +Derivation param2 on indt «a» +Derivation param2 on indt «a» took 0.004724 +Derivation tag on indt «a» +Derivation tag on indt «a» took 0.001407 +Derivation eqType_ast on indt «a» +Derivation eqType_ast on indt «a» took 0.000290 +Derivation lens_laws on indt «a» +Derivation lens_laws on indt «a» took 0.000105 +Derivation param1_congr on indt «a» +Derivation param1_congr on indt «a» took 0.000547 +Derivation param1_inhab on indt «a» +Derivation param1_inhab on indt «a» took 0.001347 +Derivation param1_functor on indt «a» +Derivation param1_functor on indt «a» took 0.009641 +Derivation fields on indt «a» +Derivation fields on indt «a» took 0.004636 +Derivation param1_trivial on indt «a» +Derivation param1_trivial on indt «a» took 0.010497 +Derivation induction on indt «a» +Derivation induction on indt «a» took 0.001612 +Derivation eqb on indt «a» +Derivation eqb on indt «a» took 0.002463 +Derivation eqbcorrect on indt «a» +Derivation eqbcorrect on indt «a» took 0.014484 +Derivation eqbOK on indt «a» +Derivation eqbOK on indt «a» took 0.001260 +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.010364 +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.005787 +Derivation eqType_ast on indt «b» +Derivation eqType_ast on indt «b» took 0.000523 +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.013882 +Derivation param1_functor on indt «b» +Derivation param1_functor on indt «b» took 0.001583 +Derivation fields on indt «b» +Derivation fields on indt «b» took 0.010782 +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.010688 +Derivation eqb on indt «b» +Derivation eqb on indt «b» took 0.003942 +Derivation eqbcorrect on indt «b» +Derivation eqbcorrect on indt «b» took 0.016077 +Derivation eqbOK on indt «b» +Derivation eqbOK on indt «b» took 0.000987 +a_eqb + : a -> a -> bool +b_eqb + : b -> b -> bool +File "./apps/derive/examples/usage.v", line 52, characters 0-92: +Warning: Global name tag is taken, using tag1 instead +[elpi.renamed,elpi,default] +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Succ p + = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false + : bool +peano_eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (peano_eqb x1 x2) +Notation peano := peano.peano + +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments peano.Succ p +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments peano.Succ p + = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false + : bool +peano.eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) +Notation peano := Peano.peano + +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Peano.Succ p +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Peano.Succ p + = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false + : bool +Peano.eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (Peano.eqb x1 x2) +Notation peano := Peano.peano + +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Peano.Succ p +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Peano.Succ p +Module +Peano +:= Struct + Inductive peano : Set := + Zero : example4.peano | Succ : example4.peano -> example4.peano. + Definition peano_rect : + forall P : example4.peano -> Type, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition peano_ind : + forall P : example4.peano -> Prop, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition peano_rec : + forall P : example4.peano -> Set, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition peano_sind : + forall P : example4.peano -> SProp, + P example4.Zero -> + (forall p : example4.peano, P p -> P (example4.Succ p)) -> + forall p : example4.peano, P p. + Definition Peano_map : example4.peano -> example4.peano. + Inductive is_peano : example4.peano -> Type := + is_Zero : is_peano example4.Zero + | is_Succ : forall p : example4.peano, + is_peano p -> is_peano (example4.Succ p). + Definition is_peano_rect : + forall P : forall s1 : example4.peano, is_peano s1 -> Type, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition is_peano_ind : + forall P : forall s1 : example4.peano, is_peano s1 -> Prop, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition is_peano_rec : + forall P : forall s1 : example4.peano, is_peano s1 -> Set, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition is_peano_sind : + forall P : forall s1 : example4.peano, is_peano s1 -> SProp, + P example4.Zero is_Zero -> + (forall (p : example4.peano) (Pp : is_peano p), + P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> + forall (s1 : example4.peano) (i : is_peano s1), P s1 i. + Definition reali_is_peano : reali_db example4.peano is_peano. + Definition reali_is_peano_Zero : reali_db example4.Zero is_Zero. + Definition reali_is_peano_Succ : reali_db example4.Succ is_Succ. + Inductive peano_R : example4.peano -> example4.peano -> Set := + Zero_R : peano_R example4.Zero example4.Zero + | Succ_R : forall p1 p2 : example4.peano, + peano_R p1 p2 -> + peano_R (example4.Succ p1) (example4.Succ p2). + Definition peano_R_rect : + forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Type, + P example4.Zero example4.Zero Zero_R -> + (forall (p1 p2 : example4.peano) (p_R : peano_R p1 p2), + P p1 p2 p_R -> + P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> + 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 (p1 p2 : example4.peano) (p_R : peano_R p1 p2), + P p1 p2 p_R -> + P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> + 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 (p1 p2 : example4.peano) (p_R : peano_R p1 p2), + P p1 p2 p_R -> + P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> + 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 (p1 p2 : example4.peano) (p_R : peano_R p1 p2), + P p1 p2 p_R -> + P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> + 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 + = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false + : bool +Peano.Peano_eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (Peano.Peano_eqb x1 x2) +Inductive peano : Set := Zero : peano | Succ : peano -> peano. + +Arguments Succ p + = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false + : bool +eqb_OK + : forall x1 x2 : peano, reflect (x1 = x2) (eqb x1 x2) +Inductive peano : Set := + Zero : Peano.peano | Succ : Peano.peano -> Peano.peano. + +Arguments Peano.Succ p + = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false + : bool +Peano.eqb_OK + : forall x1 x2 : Peano.peano, reflect (x1 = x2) (Peano.eqb x1 x2) File "./apps/tc/tests-stdlib/bigTest.v", line 21, characters 0-19: Warning: There is an hint extern in the typeclass db: @@ -19997,397 +20424,6 @@ There is an hint extern in the typeclass db: (*external*) proper_reflexive [elpi.TC.hints,elpi,default] -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.001852 -Derivation lens on indt «rtree» -Derivation lens on indt «rtree» failed, continuing -Derivation param1 on indt «rtree» -Derivation param1 on indt «rtree» took 0.005606 -Derivation param2 on indt «rtree» -Derivation param2 on indt «rtree» took 0.007318 -Derivation tag on indt «rtree» -Derivation tag on indt «rtree» took 0.001052 -Derivation eqType_ast on indt «rtree» -Derivation eqType_ast on indt «rtree» took 0.000392 -Derivation lens_laws on indt «rtree» -Derivation lens_laws on indt «rtree» took 0.000061 -Derivation param1_congr on indt «rtree» -Derivation param1_congr on indt «rtree» took 0.002174 -Derivation param1_inhab on indt «rtree» -Derivation param1_inhab on indt «rtree» took 0.001863 -Derivation param1_functor on indt «rtree» -Derivation param1_functor on indt «rtree» took 0.002031 -Derivation fields on indt «rtree» -Derivation fields on indt «rtree» took 0.006855 -Derivation param1_trivial on indt «rtree» -Derivation param1_trivial on indt «rtree» took 0.106471 -Derivation induction on indt «rtree» -Derivation induction on indt «rtree» took 0.002075 -Derivation eqb on indt «rtree» -Derivation eqb on indt «rtree» took 0.006965 -Derivation eqbcorrect on indt «rtree» -Derivation eqbcorrect on indt «rtree» took 0.024447 -Derivation eqbOK on indt «rtree» -Derivation eqbOK on indt «rtree» took 0.001294 -Done -rtree.induction -: -forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), -(forall a : A, PA a -> P (Leaf A a)) -> -(forall l : tickle (rtree A), tickle.is_tickle (rtree A) P l -> P (Node A l)) -> -forall x : rtree A, rtree.is_rtree A PA x -> P x - : forall (A : Type) (PA : A -> Type) (P : rtree A -> Type), - (forall a : A, PA a -> P (Leaf A a)) -> - (forall l : tickle (rtree A), - tickle.is_tickle (rtree A) P l -> P (Node A l)) -> - forall x : rtree A, rtree.is_rtree A PA x -> P x -Starting module Box -Declaring inductive -parameter A explicit (sort (typ «elpi.apps.derive.examples.usage.387»)) - c0 \ - record Box (sort (typ «elpi.apps.derive.examples.usage.388»)) Build_Box - (field [coercion off, canonical tt] contents c0 c1 \ - field [coercion off, canonical tt] tag (global (indt «nat»)) c2 \ - end-record) -Deriving -Skipping derivation map on indt «Box» since the user did not select it -Derivation lens on indt «Box» -Derivation lens on indt «Box» took 0.003299 -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» -Derivation tag on indt «Box» took 0.001051 -Derivation eqType_ast on indt «Box» -Derivation eqType_ast on indt «Box» took 0.000295 -Derivation lens_laws on indt «Box» -Derivation lens_laws on indt «Box» took 0.011700 -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.004677 -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.002934 -Skipping derivation eqbcorrect on indt «Box» -since the user did not select it -Skipping derivation eqbOK on indt «Box» since the user did not select it -Done -Box.eqb : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool - : forall A : Type, (A -> A -> bool) -> Box A -> Box A -> bool -@Box._tag : forall A : Type, Lens (Box A) (Box A) nat nat - : forall A : Type, Lens (Box A) (Box A) nat nat -Box._tag_set_set -: -forall (A : Type) (r : Box A) (y x : nat), -set Box._tag x (set Box._tag y r) = set Box._tag x r - : forall (A : Type) (r : Box A) (y x : nat), - set Box._tag x (set Box._tag y r) = set Box._tag x r -Box._tag_contents_exchange -: -forall (A : Type) (r : Box A) (x : nat) (y : A), -set Box._tag x (set Box._contents y r) = -set Box._contents y (set Box._tag x r) - : forall (A : Type) (r : Box A) (x : nat) (y : A), - set Box._tag x (set Box._contents y r) = - set Box._contents y (set Box._tag x r) -nat_eqb_OK : forall x y : nat, reflect (x = y) (nat_eqb x y) - : forall x y : nat, reflect (x = y) (nat_eqb x y) -Derivation map on indt «a» -Derivation map on indt «a» took 0.000787 -Derivation lens on indt «a» -Derivation lens on indt «a» failed, continuing -Derivation param1 on indt «a» -Derivation param1 on indt «a» took 0.002017 -Derivation param2 on indt «a» -Derivation param2 on indt «a» took 0.002241 -Derivation tag on indt «a» -Derivation tag on indt «a» took 0.000646 -Derivation eqType_ast on indt «a» -Derivation eqType_ast on indt «a» took 0.000174 -Derivation lens_laws on indt «a» -Derivation lens_laws on indt «a» took 0.000060 -Derivation param1_congr on indt «a» -Derivation param1_congr on indt «a» took 0.000288 -Derivation param1_inhab on indt «a» -Derivation param1_inhab on indt «a» took 0.000666 -Derivation param1_functor on indt «a» -Derivation param1_functor on indt «a» took 0.000673 -Derivation fields on indt «a» -Derivation fields on indt «a» took 0.002573 -Derivation param1_trivial on indt «a» -Derivation param1_trivial on indt «a» took 0.001109 -Derivation induction on indt «a» -Derivation induction on indt «a» took 0.000867 -Derivation eqb on indt «a» -Derivation eqb on indt «a» took 0.001370 -Derivation eqbcorrect on indt «a» -Derivation eqbcorrect on indt «a» took 0.002913 -Derivation eqbOK on indt «a» -Derivation eqbOK on indt «a» took 0.000506 -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.002379 -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.000678 -Derivation eqType_ast on indt «b» -Derivation eqType_ast on indt «b» took 0.000239 -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.000735 -Derivation param1_functor on indt «b» -Derivation param1_functor on indt «b» took 0.000728 -Derivation fields on indt «b» -Derivation fields on indt «b» took 0.003082 -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.001084 -Derivation eqb on indt «b» -Derivation eqb on indt «b» took 0.001795 -Derivation eqbcorrect on indt «b» -Derivation eqbcorrect on indt «b» took 0.004099 -Derivation eqbOK on indt «b» -Derivation eqbOK on indt «b» took 0.000529 -a_eqb - : a -> a -> bool -b_eqb - : b -> b -> bool -File "./apps/derive/examples/usage.v", line 52, characters 0-92: -Warning: Global name tag is taken, using tag1 instead -[elpi.renamed,elpi,default] -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Succ p - = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false - : bool -peano_eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (peano_eqb x1 x2) -Notation peano := peano.peano - -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments peano.Succ p -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments peano.Succ p - = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false - : bool -peano.eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2) -Notation peano := Peano.peano - -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p - = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false - : bool -Peano.eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (Peano.eqb x1 x2) -Notation peano := Peano.peano - -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Peano.Succ p -Module -Peano -:= Struct - Inductive peano : Set := - Zero : example4.peano | Succ : example4.peano -> example4.peano. - Definition peano_rect : - forall P : example4.peano -> Type, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition peano_ind : - forall P : example4.peano -> Prop, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition peano_rec : - forall P : example4.peano -> Set, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition peano_sind : - forall P : example4.peano -> SProp, - P example4.Zero -> - (forall p : example4.peano, P p -> P (example4.Succ p)) -> - forall p : example4.peano, P p. - Definition Peano_map : example4.peano -> example4.peano. - Inductive is_peano : example4.peano -> Type := - is_Zero : is_peano example4.Zero - | is_Succ : forall p : example4.peano, - is_peano p -> is_peano (example4.Succ p). - Definition is_peano_rect : - forall P : forall s1 : example4.peano, is_peano s1 -> Type, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition is_peano_ind : - forall P : forall s1 : example4.peano, is_peano s1 -> Prop, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition is_peano_rec : - forall P : forall s1 : example4.peano, is_peano s1 -> Set, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition is_peano_sind : - forall P : forall s1 : example4.peano, is_peano s1 -> SProp, - P example4.Zero is_Zero -> - (forall (p : example4.peano) (Pp : is_peano p), - P p Pp -> P (example4.Succ p) (is_Succ p Pp)) -> - forall (s1 : example4.peano) (i : is_peano s1), P s1 i. - Definition reali_is_peano : reali_db example4.peano is_peano. - Definition reali_is_peano_Zero : reali_db example4.Zero is_Zero. - Definition reali_is_peano_Succ : reali_db example4.Succ is_Succ. - Inductive peano_R : example4.peano -> example4.peano -> Set := - Zero_R : peano_R example4.Zero example4.Zero - | Succ_R : forall p1 p2 : example4.peano, - peano_R p1 p2 -> - peano_R (example4.Succ p1) (example4.Succ p2). - Definition peano_R_rect : - forall P : forall s1 s2 : example4.peano, peano_R s1 s2 -> Type, - P example4.Zero example4.Zero Zero_R -> - (forall (p1 p2 : example4.peano) (p_R : peano_R p1 p2), - P p1 p2 p_R -> - P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> - 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 (p1 p2 : example4.peano) (p_R : peano_R p1 p2), - P p1 p2 p_R -> - P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> - 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 (p1 p2 : example4.peano) (p_R : peano_R p1 p2), - P p1 p2 p_R -> - P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> - 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 (p1 p2 : example4.peano) (p_R : peano_R p1 p2), - P p1 p2 p_R -> - P (example4.Succ p1) (example4.Succ p2) (Succ_R p1 p2 p_R)) -> - 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 - = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false - : bool -Peano.Peano_eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (Peano.Peano_eqb x1 x2) -Inductive peano : Set := Zero : peano | Succ : peano -> peano. - -Arguments Succ p - = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false - : bool -eqb_OK - : forall x1 x2 : peano, reflect (x1 = x2) (eqb x1 x2) -Inductive peano : Set := - Zero : Peano.peano | Succ : Peano.peano -> Peano.peano. - -Arguments Peano.Succ p - = if pos_eq_dec (BinNums.xO BinNums.xH) BinNums.xH then true else false - : bool -Peano.eqb_OK - : forall x1 x2 : Peano.peano, reflect (x1 = x2) (Peano.eqb x1 x2) derive.param1_trivial: wrong shape is_nest . It does not look like a unary parametricity translation of an inductive with no indexes. derive.param1_trivial: wrong shape is_vect A PA @@ -20401,13 +20437,13 @@ 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.001321 +Derivation projK on indt «nat» took 0.002196 Derivation isK on indt «nat» -Derivation isK on indt «nat» took 0.001429 +Derivation isK on indt «nat» took 0.002707 Derivation eq on indt «nat» -Derivation eq on indt «nat» took 0.001438 +Derivation eq on indt «nat» took 0.002772 Derivation invert on indt «nat» -Derivation invert on indt «nat» took 0.001296 +Derivation invert on indt «nat» took 0.002900 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 @@ -20417,7 +20453,7 @@ 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.002471 +Derivation bcongr on indt «nat» took 0.005487 Derivation idx2inv on indt «nat» Derivation idx2inv on indt «nat» failed, continuing Skipping derivation param1_trivial on indt «nat» @@ -20425,13 +20461,13 @@ 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.002735 +Derivation eqK on indt «nat» took 0.004862 Skipping derivation eqbcorrect on indt «nat» since it has been already run Derivation eqcorrect on indt «nat» -Derivation eqcorrect on indt «nat» took 0.000806 +Derivation eqcorrect on indt «nat» took 0.001602 Skipping derivation eqbOK on indt «nat» since it has been already run Derivation eqOK on indt «nat» -Derivation eqOK on indt «nat» took 0.000445 +Derivation eqOK on indt «nat» took 0.000815 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 @@ -20476,12 +20512,12 @@ Skipping derivation map on indt «foo» since the user did not select it Skipping derivation lens on indt «foo» since the user did not select it Derivation param1 on indt «foo» -Derivation param1 on indt «foo» took 0.003359 +Derivation param1 on indt «foo» took 0.006556 Skipping derivation param2 on indt «foo» since the user did not select it Derivation tag on indt «foo» -Derivation tag on indt «foo» took 0.000864 +Derivation tag on indt «foo» took 0.001536 Derivation eqType_ast on indt «foo» -Derivation eqType_ast on indt «foo» took 0.000294 +Derivation eqType_ast on indt «foo» took 0.000618 Skipping derivation projK on indt «foo» since the user did not select it Skipping derivation isK on indt «foo» since the user did not select it Skipping derivation eq on indt «foo» since the user did not select it @@ -20491,26 +20527,26 @@ Skipping derivation param1_congr on indt «foo» since the user did not select it Derivation param1_inhab on indt «foo» -Derivation param1_inhab on indt «foo» took 0.000953 +Derivation param1_inhab on indt «foo» took 0.002028 Derivation param1_functor on indt «foo» -Derivation param1_functor on indt «foo» took 0.000846 +Derivation param1_functor on indt «foo» took 0.001837 Derivation fields on indt «foo» -Derivation fields on indt «foo» took 0.003851 +Derivation fields on indt «foo» took 0.008329 Skipping derivation bcongr on indt «foo» since the user did not select it Skipping derivation idx2inv on indt «foo» since the user did not select it Skipping derivation param1_trivial on indt «foo» since the user did not select it Derivation induction on indt «foo» -Derivation induction on indt «foo» took 0.001060 +Derivation induction on indt «foo» took 0.002299 Derivation eqb on indt «foo» -Derivation eqb on indt «foo» took 0.002146 +Derivation eqb on indt «foo» took 0.004974 Skipping derivation eqK on indt «foo» since the user did not select it Derivation eqbcorrect on indt «foo» -Derivation eqbcorrect on indt «foo» took 0.004552 +Derivation eqbcorrect on indt «foo» took 0.010196 Skipping derivation eqcorrect on indt «foo» since the user did not select it Derivation eqbOK on indt «foo» -Derivation eqbOK on indt «foo» took 0.000687 +Derivation eqbOK on indt «foo» took 0.001540 Skipping derivation eqOK on indt «foo» since the user did not select it File "./apps/derive/tests-stdlib/test_derive.v", line 33, characters 2-9: Warning: This command does not support this attribute: verbose. @@ -20519,13 +20555,13 @@ Warning: Using Vector.t is known to be technically difficult, see . [warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default] -Finished transaction in 1.347 secs (1.246u,0.1s) (successful) -Finished transaction in 18.123 secs (17.997u,0.095s) (successful) -Finished transaction in 0.232 secs (0.228u,0.004s) (successful) +Finished transaction in 2.642 secs (1.477u,0.078s) (successful) +Finished transaction in 46.467 secs (28.376u,2.943s) (successful) +Finished transaction in 0.23 secs (0.229u,0.s) (successful) dune build builtin-doc Warning: Cache directories could not be created: Permission denied; disabling cache -Hint: Make sure the directory /nonexistent/first-build/.cache/dune/db/temp +Hint: Make sure the directory /nonexistent/second-build/.cache/dune/db/temp can be created make[2]: Leaving directory '/build/reproducible-path/coq-elpi-2.5.0' make[1]: Leaving directory '/build/reproducible-path/coq-elpi-2.5.0' @@ -20537,7 +20573,7 @@ dune install rocq-elpi --destdir=/build/reproducible-path/coq-elpi-2.5.0/debian/tmp --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu/ocaml/5.3.0 Warning: Cache directories could not be created: Permission denied; disabling cache -Hint: Make sure the directory /nonexistent/first-build/.cache/dune/db/temp +Hint: Make sure the directory /nonexistent/second-build/.cache/dune/db/temp can be created rm -fr /build/reproducible-path/coq-elpi-2.5.0/debian/tmp/usr/doc/coq-elpi rm -fr /build/reproducible-path/coq-elpi-2.5.0/debian/tmp/usr/doc/rocq-elpi @@ -20585,12 +20621,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/3258090/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3258090/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/2652653 and its subdirectories -I: Current time: Wed Aug 19 07:57:10 -12 2026 -I: pbuilder-time-stamp: 1787169430 +I: removing directory /srv/workspace/pbuilder/3258090 and its subdirectories +I: Current time: Fri Jul 18 03:38:00 +14 2025 +I: pbuilder-time-stamp: 1752759480