Skip to content

Commit a130e2b

Browse files
authored
Merge pull request #784 from LPCIC/fix-780
derive: param1 support for is_true and primitive strings
2 parents ab6881e + 5c4b3d0 commit a130e2b

38 files changed

+304
-104
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ jobs:
2727
with:
2828
opam_file: 'rocq-elpi.opam'
2929
custom_image: ${{ matrix.image }}
30+
after_script: |
31+
sudo chmod -R a+w .
32+
make all-examples
33+
make all-tests
3034
export: 'OPAMWITHTEST OPAMIGNORECONSTRAINTS OPAMVERBOSE' # space-separated list of variables
3135
env:
3236
OPAMWITHTEST: 'true'

Changelog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# UNRELEASED
2+
3+
### APPS:
4+
- derive: support for primitive strings in `param1` and `param1_trivial`
5+
- derive: support for `is_true` in `param1_trivial` (based on pre-existing
6+
special support for `is_eq` and `is_bool`)
7+
18
# [2.5.0] 18/2/2025
29

310
Requires Elpi 2.0.7 and Coq 8.20 or Rocq 9.0.

_CoqProject

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
# Theories
1010

11-
-Q theories elpi
12-
-Q _build/default/theories elpi
11+
-R theories elpi
12+
-R _build/default/theories elpi
1313
-Q theories-stdlib elpi_stdlib
1414
-Q _build/default/theories-stdlib elpi_stdlib
1515

apps/cs/tests/setup-project.sh

Lines changed: 0 additions & 1 deletion
This file was deleted.

apps/derive/elpi/eqType.elpi

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ translate-record-constructor (field _ ID _ _) _ (error S) :- S is "unsupported r
6363
pred self o:eqb.trm.
6464

6565
pred valid i:eqb.trm, o:diagnostic.
66-
valid (eqb.global X) ok :- global X = {{ PrimInt63.int }}, !.
6766
valid (eqb.global GR) ok :- eqType GR _, !.
6867
valid (eqb.app GR A Args) D :- eqType GR EQT, !, valid-eqType EQT [A|Args] D.
6968
valid T (error S) :- S is "not an eqType: " ^ {std.any->string T}.
@@ -86,7 +85,7 @@ irrelevant? (app [{{ @eq }}, global EqType, A, B]) (eqb.app EQ EQTYPE [A1,B1]) D
8685
term->trm A A1,
8786
term->trm B B1,
8887
].
89-
irrelevant? T R D :- whd1 T T1, coq.say "whd" T T1, irrelevant? T1 R D.
88+
irrelevant? T R D :- whd1 T T1, irrelevant? T1 R D.
9089

9190
pred term->trm i:term, o:eqb.trm, o:diagnostic.
9291
term->trm (global GR) (eqb.global GR) ok :- !.

apps/derive/tests/test_bcongr.v

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Elpi derive.bcongr large.
2929
*)
3030
Elpi derive.bcongr prim_int.
3131
Elpi derive.bcongr prim_float.
32+
Elpi derive.bcongr prim_string.
3233
Elpi derive.bcongr fo_record.
3334
Elpi derive.bcongr pa_record.
3435
Elpi derive.bcongr pr_record.

apps/derive/tests/test_derive_corelib.v

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(* Some standard data types using different features *)
2-
From elpi.core Require PrimInt63.
3-
From elpi.core Require PrimFloat.
2+
From elpi Require elpi.
3+
From elpi.core Require PrimInt63 PrimFloat PrimString.
44

55
Module Coverage.
66

@@ -70,6 +70,7 @@ Inductive large :=
7070

7171
Inductive prim_int := PI (i : PrimInt63.int).
7272
Inductive prim_float := PF (f : PrimFloat.float).
73+
Inductive prim_string := PS (s : lib:elpi.pstring).
7374

7475
Record fo_record := { f1 : peano; f2 : unit; }.
7576

@@ -91,6 +92,8 @@ Definition is_zero (n:peano) : bool :=
9192

9293
Record sigma_bool := { depn : peano; depeq : is_zero depn = true }.
9394

95+
Record sigma_bool2 := { depn2 : peano; depeq2 : lib:elpi.is_true (is_zero depn2) }.
96+
9497
Fixpoint is_leq (n m:peano) : bool :=
9598
match n, m with
9699
| Zero, _ => true

apps/derive/tests/test_eq.v

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Fail Elpi derive.eq iota.
2323
Elpi derive.eq large.
2424
Elpi derive.eq prim_int.
2525
Elpi derive.eq prim_float.
26+
Elpi derive.eq prim_string.
2627
Elpi derive.eq fo_record.
2728
Elpi derive.eq pa_record.
2829
Elpi derive.eq pr_record.

apps/derive/tests/test_eqK.v

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ Elpi derive.eqK large.
3737
*)
3838
Elpi derive.eqK prim_int.
3939
Elpi derive.eqK prim_float.
40+
Elpi derive.eqK prim_string.
4041
Elpi derive.eqK fo_record.
4142
Elpi derive.eqK pa_record.
4243
Elpi derive.eqK pr_record.

apps/derive/tests/test_eqOK.v

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From elpi.apps Require Import derive.eqOK.
1+
From elpi.apps Require Import derive.param1 derive.eqOK.
22

33
From elpi.apps Require Import test_derive_corelib test_eqcorrect test_param1 test_param1_trivial.
44

@@ -31,6 +31,7 @@ Elpi derive.eqOK large.
3131
*)
3232
Elpi derive.eqOK prim_int.
3333
Fail Elpi derive.eqOK prim_float.
34+
Elpi derive.eqOK prim_string.
3435
Elpi derive.eqOK fo_record.
3536
Elpi derive.eqOK pa_record.
3637
Elpi derive.eqOK pr_record.

0 commit comments

Comments
 (0)