push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
{
lib,
mkCoqDerivation,
coq,
StructTact,
version ? null,
}:
mkCoqDerivation {
pname = "cheerios";
owner = "uwplse";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.version [
(case (range "8.14" "9.1") "20230107")
(case (range "8.6" "8.16") "20200201")
] null;
release."20230107".rev = "bad8ad2476e14df6b5a819b7aaddc27a7c53fb69";
release."20230107".sha256 = "sha256-G7a+6h4VDk7seKvFr6wy7vYqYmhUje78TYCj98wXrr8=";
release."20200201".rev = "9c7f66e57b91f706d70afa8ed99d64ed98ab367d";
release."20200201".sha256 = "1h55s6lk47bk0lv5ralh81z55h799jbl9mhizmqwqzy57y8wqgs1";
propagatedBuildInputs = [ StructTact ];
}

View File

@@ -0,0 +1,51 @@
{
lib,
mkCoqDerivation,
coq,
bignums,
version ? null,
}:
mkCoqDerivation {
pname = "color";
owner = "fblanqui";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.version [
(case (range "8.14" "9.1") "1.8.5")
(case (range "8.12" "8.16") "1.8.2")
(case (range "8.10" "8.11") "1.7.0")
(case (range "8.8" "8.9") "1.6.0")
(case (range "8.6" "8.7") "1.4.0")
] null;
release."1.8.5".sha256 = "sha256-zKAyj6rKAasDF+iKExmpVHMe2WwgAwv2j1mmiVAl7ys=";
release."1.8.4".sha256 = "sha256-WlRiaLgnFFW5AY0z6EzdP1mevNe1GHsik6wULJLN4k0=";
release."1.8.3".sha256 = "sha256-mMUzIorkQ6WWQBJLk1ioUNwAdDdGHJyhenIvkAjALVU=";
release."1.8.2".sha256 = "sha256:1gvx5cxm582793vxzrvsmhxif7px18h9xsb2jljy2gkphdmsnpqj";
release."1.8.1".sha256 = "0knhca9fffmyldn4q16h9265i7ih0h4jhcarq4rkn0wnn7x8w8yw";
release."1.7.0".rev = "08b5481ed6ea1a5d2c4c068b62156f5be6d82b40";
release."1.7.0".sha256 = "1w7fmcpf0691gcwq00lm788k4ijlwz3667zj40j5jjc8j8hj7cq3";
release."1.6.0".rev = "328aa06270584b578edc0d2925e773cced4f14c8";
release."1.6.0".sha256 = "07sy9kw1qlynsqy251adgi8b3hghrc9xxl2rid6c82mxfsp329sd";
release."1.4.0".rev = "168c6b86c7d3f87ee51791f795a8828b1521589a";
release."1.4.0".sha256 = "1d2whsgs3kcg5wgampd6yaqagcpmzhgb6a0hp6qn4lbimck5dfmm";
mlPlugin = true; # uses coq-bignums.plugin
propagatedBuildInputs = [ bignums ];
enableParallelBuilding = false;
meta = {
homepage = "https://github.com/fblanqui/color";
description = "CoLoR is a library of formal mathematical definitions and proofs of theorems on rewriting theory and termination whose correctness has been mechanically checked by the Coq proof assistant";
maintainers = with lib.maintainers; [
jpas
jwiegley
];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
mkCoqDerivation,
which,
coq,
metacoq,
version ? null,
}:
with lib;
mkCoqDerivation {
pname = "ElmExtraction";
repo = "coq-elm-extraction";
owner = "AU-COBRA";
domain = "github.com";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with versions;
switch
[
coq.coq-version
metacoq.version
]
[
(case (range "8.17" "9.0") (range "1.3.1" "1.3.4") "0.1.1")
]
null;
release."0.1.0".sha256 = "EWjubBHsxAl2HuRAfJI3B9qzP2mj89eh0CUc8y7/7Ds=";
release."0.1.1".sha256 = "SDSyXqtOQlW9m9yH8OC909fsC/ePhKkSiY+BoQE76vk=";
releaseRev = v: "v${v}";
propagatedBuildInputs = [
coq.ocamlPackages.findlib
metacoq
];
postPatch = ''patchShebangs ./tests/process-extraction-examples.sh'';
meta = {
description = "Framework for extracting Coq programs to Elm";
maintainers = with maintainers; [ _4ever2 ];
license = licenses.mit;
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "coq-ext-lib";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.14" "9.1") "0.13.0")
(case (range "8.11" "8.19") "0.12.0")
(case (range "8.8" "8.16") "0.11.6")
(case (range "8.8" "8.14") "0.11.4")
(case (range "8.8" "8.13") "0.11.3")
(case "8.7" "0.9.7")
(case "8.6" "0.9.5")
(case "8.5" "0.9.4")
] null;
release."0.13.0".sha256 = "sha256-vqVSu+nyGjRVXe2tnE6MPl0kcg4LHfgFwRCpTQAP/is=";
release."0.12.2".sha256 = "sha256-lSTlbpkSuAY6B9cqofXSlDk2VchtqfZpRQ0+y/BAbEY=";
release."0.12.1".sha256 = "sha256-YIHyiRUHPy/LGM2DMTRKRwP7j6OSBYKpu6wO2mZOubo=";
release."0.12.0".sha256 = "sha256-9szpnWoS83bDc+iLqElfgz0LNRo9hSRQwUFIgpTca4c=";
release."0.11.8".sha256 = "sha256-uUBKJb7XjRnyb7rCisZrDcaDdsp1Bv1lXDIU3Ce8e5k=";
release."0.11.7".sha256 = "sha256-HkxUny0mxDDT4VouBBh8btwxGZgsb459kBufTLLnuEY=";
release."0.11.6".sha256 = "0w6iyrdszz7zc8kaybhy3mwjain2d2f83q79xfd5di0hgdayh7q7";
release."0.11.4".sha256 = "0yp8mhrhkc498nblvhq1x4j6i9aiidkjza4wzvrkp9p8rgx5g5y3";
release."0.11.3".sha256 = "1w99nzpk72lffxis97k235axss5lmzhy5z3lga2i0si95mbpil42";
release."0.11.2".sha256 = "0iyka81g26x5n99xic7kqn8vxqjw8rz7vw9rs27iw04lf137vzv6";
release."0.10.3".sha256 = "0795gs2dlr663z826mp63c8h2zfadn541dr8q0fvnvi2z7kfyslb";
release."0.11.1".sha256 = "0dmf1p9j8lm0hwaq0af18jxdwg869xi2jm8447zng7krrq3kvkg5";
release."0.10.2".sha256 = "1b150rc5bmz9l518r4m3vwcrcnnkkn9q5lrwygkh0a7mckgg2k9f";
release."0.10.1".sha256 = "0r1vspad8fb8bry3zliiz4hfj4w1iib1l2gm115a94m6zbiksd95";
release."0.10.0".sha256 = "1kxi5bmjwi5zqlqgkyzhhxwgcih7wf60cyw9398k2qjkmi186r4a";
release."0.9.7".sha256 = "00v4bm4glv1hy08c8xsm467az6d1ashrznn8p2bmbmmp52lfg7ag";
release."0.9.5".sha256 = "1b4cvz3llxin130g13calw5n1zmvi6wdd5yb8a41q7yyn2hd3msg";
release."0.9.4".sha256 = "1y66pamgsdxlq2w1338lj626ln70cwj7k53hxcp933g8fdsa4hp0";
releaseRev = v: "v${v}";
propagatedBuildInputs = [ stdlib ];
meta = {
description = "Collection of theories and plugins that may be useful in other Coq developments";
maintainers = with lib.maintainers; [
jwiegley
ptival
];
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "HoTT";
repo = "Coq-HoTT";
owner = "HoTT";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.14" "9.0";
out = coq.coq-version;
}
] null;
releaseRev = v: "V${v}";
release."8.14".sha256 = "sha256-7kXk2pmYsTNodHA+Qts3BoMsewvzmCbYvxw9Sgwyvq0=";
release."8.15".sha256 = "sha256-JfeiRZVnrjn3SQ87y6dj9DWNwCzrkK3HBogeZARUn9g=";
release."8.16".sha256 = "sha256-xcEbz4ZQ+U7mb0SEJopaczfoRc2GSgF2BGzUSWI0/HY=";
release."8.17".sha256 = "sha256-GjTUpzL9UzJm4C2ilCaYEufLG3hcj7rJPc5Op+OMal8=";
release."8.18".sha256 = "sha256-URoUoQOsG0432wg9i6pTRomWQZ+ewutq2+V29TBrVzc=";
release."8.19".sha256 = "sha256-igG3mhR6uPXV+SCtPH9PBw/eAtTFFry6HPT5ypWj3tQ=";
release."8.20".sha256 = "sha256-XHAvomi0of11j4x5gpTgD5Mw53eF1FpnCyBvdbV3g6I=";
release."9.0".sha256 = "sha256-etdLH1qDyDc+ZM7K/65iib0MRlLhsnVmzWBCULUDD50=";
# versions of HoTT for Coq 8.17 and onwards will use dune
# opam-name = if lib.versions.isLe "8.17" coq.coq-version then "coq-hott" else null;
opam-name = "coq-hott";
useDune = lib.versions.isGe "8.17" coq.coq-version;
patchPhase = ''
patchShebangs etc
'';
meta = {
homepage = "https://homotopytypetheory.org/";
description = "Homotopy Type Theory library";
longDescription = ''
Homotopy Type Theory is an interpretation of Martin-Löfs intensional
type theory into abstract homotopy theory. Propositional equality is
interpreted as homotopy and type isomorphism as homotopy equivalence.
Logical constructions in type theory then correspond to
homotopy-invariant constructions on spaces, while theorems and even
proofs in the logical system inherit a homotopical meaning. As the
natural logic of homotopy, type theory is also related to higher
category theory as it is used e.g. in the notion of a higher topos.
The HoTT library is a development of homotopy-theoretic ideas in the Coq
proof assistant. It draws many ideas from Vladimir Voevodsky's
Foundations library (which has since been incorporated into the Unimath
library) and also cross-pollinates with the HoTT-Agda library.
'';
maintainers = with lib.maintainers; [
alizter
siddharthist
];
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
paco,
ExtLib,
}:
mkCoqDerivation {
pname = "InteractionTrees";
owner = "DeepSpec";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.version [
(case (range "8.14" "9.1") "5.2.1")
(case (isEq "8.13") "5.2.0+20241009")
(case (range "8.10" "8.16") "4.0.0")
] null;
release."5.2.1".sha256 = "sha256-3ExKHXIA8EnzAPzSbdB9FTN2OcLCVS5WtmrHOiN9UiQ=";
release."5.2.0+20241009".sha256 = "sha256-eg47YgnIonCq7XOUgh9uzoKsuFCvsOSTZhgFLNNcPD0=";
release."5.2.0+20241009".rev = "abd1c7d3935cf03f02bf90e028e6cd3d3dce7713";
release."5.2.0".sha256 = "sha256-rKLz7ekZf/9xcQefBRsAdULmk81olzQ1W28y61vCDsY=";
release."5.1.2".sha256 = "sha256-uKJIjNXGWl0YS0WH52Rnr9Jz98Eo2k0X0qWB9hUYJMk=";
release."5.1.1".sha256 = "sha256-VlmPNwaGkdWrH7Z6DGXRosGtjuuQ+FBiGcadN2Hg5pY=";
release."5.1.0".sha256 = "sha256-ny7Mi1KgWADiFznkNJiRgD7Djc5SUclNgKOmWRxK+eo=";
release."4.0.0".sha256 = "0h5rhndl8syc24hxq1gch86kj7mpmgr89bxp2hmf28fd7028ijsm";
release."3.2.0".sha256 = "sha256-10ckCAqSQ0I3CZKlSllI1obOgWVxDagTd7eyhrl1xpE=";
releaseRev = v: "${v}";
propagatedBuildInputs = [
ExtLib
paco
];
meta = {
description = "Library for Representing Recursive and Impure Programs in Coq";
maintainers = with lib.maintainers; [ larsr ];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "InfSeqExt";
owner = "DistributedComponents";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.version [
(case (range "8.9" "9.1") "20230107")
(case (range "8.5" "8.16") "20200131")
] null;
release."20230107".rev = "601e89ec019501c48c27fcfc14b9a3c70456e408";
release."20230107".sha256 = "sha256-YMBzVIsLkIC+w2TeyHrKe29eWLIxrH3wIMZqhik8p9I=";
release."20200131".rev = "203d4c20211d6b17741f1fdca46dbc091f5e961a";
release."20200131".sha256 = "0xylkdmb2dqnnqinf3pigz4mf4zmczcbpjnn59g5g76m7f2cqxl0";
propagatedBuildInputs = [ stdlib ];
}

View File

@@ -0,0 +1,25 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "LibHyps";
owner = "Matafou";
inherit version;
defaultVersion = if (lib.versions.range "8.11" "8.20") coq.version then "2.0.8" else null;
release = {
"2.0.8".sha256 = "sha256-u8T7ZWfgYNFBsIPss0uUS0oBvdlwPp3t5yYIMjYzfLc=";
};
configureScript = "./configure.sh";
releaseRev = (v: "libhyps-${v}");
meta = {
description = "Hypotheses manipulation library";
license = lib.licenses.mit;
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
let
MenhirLib = mkCoqDerivation {
pname = "MenhirLib";
owner = "fpottier";
repo = "menhir";
domain = "gitlab.inria.fr";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.12" "9.1") "20250903")
(case (range "8.7" "8.11") "20200624")
] null;
release = {
"20250903".sha256 = "sha256-ap1OvcvCAuqmFDwhPwMBosHs3cm5NxPW/w1J8AzWduk=";
"20240715".sha256 = "sha256-9CSxAIm0aEXkwF+aj8u/bqLG30y5eDNz65EnohJPjzI="; # coq 8.9 - 8.20
"20231231".sha256 = "sha256-veB0ORHp6jdRwCyDDAfc7a7ov8sOeHUmiELdOFf/QYk="; # coq 8.7 - 8.19
"20230608".sha256 = "sha256-dUPoIUVr3gqvE5bniyQh/b37tNfRsZN8X3e99GFkyLY="; # coq 8.7 - 8.18
"20230415".sha256 = "sha256-WjE3iOKlUb15MDG3+GOi+nertAw9L2Ryazi/0JEvjqc="; # coq 8.7 - 8.18
"20220210".sha256 = "sha256-Nljrgq8iW17qbn2PLIbjPd03WCcZm08d1DF6NrKOYTg="; # coq 8.7 - 8.18
"20211230".sha256 = "sha256-+ntl4ykkqJWEeJJzt6fO5r0X1J+4in2LJIj1N8R175w="; # coq 8.7 - 8.18
"20200624".sha256 = "sha256-8lMqwmOsqxU/45Xr+GeyU2aIjrClVdv3VamCCkF76jY="; # coq 8.7 - 8.13
};
propagatedBuildInputs = [ stdlib ];
preBuild = "cd coq-menhirlib/src";
meta = {
homepage = "https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib";
description = "Support library for verified Coq parsers produced by Menhir";
license = lib.licenses.lgpl3Plus;
maintainers = with lib.maintainers; [ damhiya ];
};
};
in
MenhirLib.overrideAttrs (
oldAttrs:
if oldAttrs.version <= "20211230" then
{ installPhase = "make TARGET=$out/lib/coq/${coq.coq-version}/user-contrib/MenhirLib install"; }
else
{ }
)

View File

@@ -0,0 +1,36 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "Ordinal";
owner = "snu-sf";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.12" "8.20";
out = "0.5.4";
}
] null;
release = {
"0.5.4".sha256 = "sha256-PaEC71FzJzHVGYpf3J1jvb/JsJzzMio0L5d5dPwiXuc=";
"0.5.3".sha256 = "sha256-Myxwy749ZCBpqia6bf91cMTyJn0nRzXskD7Ue8kc37c=";
"0.5.2".sha256 = "sha256-jf16EyLAnKm+42K+gTTHVFJqeOVQfIY2ozbxIs5x5DE=";
"0.5.1".sha256 = "sha256-ThJ+jXmtkAd3jElpQZqfzqqc3EfoKY0eMpTHnbrracY=";
"0.5.0".sha256 = "sha256-Jq0LnR7TgRVcPqh8Ha6tIIK3KfRUgmzA9EhxeySgPnM=";
};
releaseRev = v: "v${v}";
installPhase = ''
make -f Makefile.coq COQMF_COQLIB=$out/lib/coq/${coq.coq-version}/ install
'';
meta = {
homepage = "https://github.com/snu-sf/Ordinal";
description = "Ordinal Numbers in Coq";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ damhiya ];
};
}

View File

@@ -0,0 +1,108 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-boot,
ExtLib,
simple-io,
version ? null,
}:
let
recent = lib.versions.isGe "8.7" coq.coq-version || coq.coq-version == "dev";
in
(mkCoqDerivation {
pname = "QuickChick";
owner = "QuickChick";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
lib.switch
[ coq.coq-version mathcomp-boot.version ]
[
(case (lib.versions.range "8.15" "9.0") lib.pred.true "2.0.4")
(case (lib.versions.range "8.13" "8.17") lib.pred.true "1.6.5")
(case "8.13" lib.pred.true "1.5.0")
(case "8.12" lib.pred.true "1.4.0")
(case "8.11" lib.pred.true "1.3.2")
(case "8.10" lib.pred.true "1.2.1")
(case "8.9" lib.pred.true "1.1.0")
(case "8.8" lib.pred.true "20190311")
(case "8.7" (lib.versions.isLe "1.8") "1.0.0")
(case "8.6" lib.pred.true "20171102")
(case "8.5" lib.pred.true "20170512")
]
null;
release."2.0.4".sha256 = "sha256-WD8B+n8gyGctHMO+M8201Ca3Uw8zCWYsOatSNGCf0/s=";
release."2.0.2".sha256 = "sha256-xxKkwDRjB8nUiXNhein1Ppn0DP5FZ13J90xUPAnQBbs=";
release."2.0.1".sha256 = "sha256-gJc+9Or6tbqE00920Il4pnEvokRoiADX6CxP/Q0QZaY=";
release."1.6.5".sha256 = "sha256-rcFyRDH8UbB9KVk10P5qjtPkWs04p78VNHkCq4mXr3U=";
release."1.6.4".sha256 = "sha256-C1060wPSU33yZAFLxGmZlAMXASnx98qz3oSLO8DO+mM=";
release."1.6.2".sha256 = "0g5q9zw3xd4zndihq96nxkq4w3dh05418wzlwdk1nnn3b6vbx6z0";
release."1.5.0".sha256 = "1lq8x86vd3vqqh2yq6hvyagpnhfq5wmk5pg2z0xq7b7dcw7hyfkw";
release."1.4.0".sha256 = "068p48pm5yxjc3yv8qwzp25bp9kddvxj81l31mjkyx3sdrsw3kyc";
release."1.3.2".sha256 = "0lciwaqv288dh2f13xk2x0lrn6zyrkqy6g4yy927wwzag2gklfrs";
release."1.2.1".sha256 = "17vz88xjzxh3q7hs6hnndw61r3hdfawxp5awqpgfaxx4w6ni8z46";
release."1.1.0".sha256 = "1c34v1k37rk7v0xk2czv5n79mbjxjrm6nh3llg2mpfmdsqi68wf3";
release."1.0.0".sha256 = "1gqy9a4yavd0sa7kgysf9gf2lq4p8dmn4h89y8081f2j8zli0w5y";
release."20190311".rev = "22af9e9a223d0038f05638654422e637e863b355";
release."20190311".sha256 = "00rnr19lg6lg0haq1sy4ld38p7imzand6fc52fvfq27gblxkp2aq";
release."20171102".rev = "0fdb769e1dc87a278383b44a9f5102cc7ccbafcf";
release."20171102".sha256 = "0fri4nih40vfb0fbr82dsi631ydkw48xszinq43lyinpknf54y17";
release."20170512".rev = "31eb050ae5ce57ab402db9726fb7cd945a0b4d03";
release."20170512".sha256 = "033ch10i5wmqyw8j6wnr0dlbnibgfpr1vr0c07q3yj6h23xkmqpg";
releaseRev = v: "v${v}";
preConfigure = lib.optionalString recent "substituteInPlace Makefile --replace quickChickTool.byte quickChickTool.native";
useDuneifVersion = v: lib.versions.isGe "2.1" v || v == "dev";
opam-name = "coq-quickchick";
mlPlugin = true;
nativeBuildInputs = lib.optional recent coq.ocamlPackages.ocamlbuild;
propagatedBuildInputs = [
mathcomp-boot
]
++ lib.optionals recent [
ExtLib
simple-io
];
extraInstallFlags = [ "-f Makefile.coq" ];
enableParallelBuilding = false;
meta = with lib; {
description = "Randomized property-based testing plugin for Coq; a clone of Haskell QuickCheck";
maintainers = with maintainers; [ jwiegley ];
};
}).overrideAttrs
(
o:
let
after_1_6 = lib.versions.isGe "1.6" o.version || o.version == "dev";
after_2_1 = lib.versions.isGe "2.1" o.version || o.version == "dev";
in
{
nativeBuildInputs =
o.nativeBuildInputs
++ lib.optional after_1_6 coq.ocamlPackages.cppo
++ lib.optional after_2_1 coq.ocamlPackages.menhir;
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optionals after_1_6 (
with coq.ocamlPackages;
[
findlib
zarith
]
);
}
)

View File

@@ -0,0 +1,62 @@
{
lib,
mkCoqDerivation,
which,
coq,
metacoq,
version ? null,
}:
with lib;
mkCoqDerivation {
pname = "RustExtraction";
repo = "coq-rust-extraction";
owner = "AU-COBRA";
domain = "github.com";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with versions;
switch
[
coq.coq-version
metacoq.version
]
[
(case (range "8.20" "9.0") (range "1.3.2" "1.3.4") "0.1.1")
(case (range "8.17" "8.19") (range "1.3.1" "1.3.3") "0.1.0")
]
null;
release."0.1.0".sha256 = "+Of/DP2Vjsa7ASKswjlvqqhcmDhC9WrozridedNZQkY=";
release."0.1.1".sha256 = "CPZ5J9knJ1aYoQ7RQN8YFSpxqJXjgQaxIA4F8G6X4tM=";
releaseRev = v: "v${v}";
propagatedBuildInputs = [
coq.ocamlPackages.findlib
metacoq
];
postPatch = ''
patchShebangs ./process_extraction.sh
patchShebangs ./tests/process-extraction-examples.sh
'';
mlPlugin = true;
meta = {
description = "Framework for extracting Coq programs to Rust";
maintainers = with maintainers; [ _4ever2 ];
license = licenses.mit;
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "StructTact";
owner = "uwplse";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.9" "9.1") "20230107")
(case (range "8.6" "8.16") "20210328")
(case (range "8.5" "8.13") "20181102")
] null;
release."20230107".rev = "2f2ff253be29bb09f36cab96d036419b18a95b00";
release."20230107".sha256 = "sha256-4mWdnWD8m1ddgqWHqzjqclhinXJaB/YoLlmLeeL0yZA=";
release."20210328".rev = "179bd5312e9d8b63fc3f4071c628cddfc496d741";
release."20210328".sha256 = "sha256:1y5r1zm3hli10ah6lnj7n8hxad6rb6rgldd0g7m2fjibzvwqzhdg";
release."20181102".rev = "82a85b7ec07e71fa6b30cfc05f6a7bfb09ef2510";
release."20181102".sha256 = "08zry20flgj7qq37xk32kzmg4fg6d4wi9m7pf9aph8fd3j2a0b5v";
propagatedBuildInputs = [ stdlib ];
}

View File

@@ -0,0 +1,93 @@
{
lib,
mkCoqDerivation,
coq,
compcert,
ITree,
version ? null,
}:
# A few modules that are not built and installed by default
# but that may be useful to some users.
# They depend on ITree.
let
extra_floyd_files = [
"ASTsize.v"
"io_events.v"
"powerlater.v"
]
# floyd/printf.v is broken in VST 2.9
++ lib.optional (!lib.versions.isGe "8.13" coq.coq-version) "printf.v"
++ [
"quickprogram.v"
];
in
mkCoqDerivation {
pname = "coq${coq.coq-version}-VST";
namePrefix = [ ];
displayVersion = {
coq = false;
};
owner = "PrincetonUniversity";
repo = "VST";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.19" "8.20") "2.15")
(case (range "8.15" "8.19") "2.14")
(case (range "8.15" "8.17") "2.13")
(case (range "8.14" "8.16") "2.10")
(case (range "8.13" "8.15") "2.9")
(case (range "8.12" "8.13") "2.8")
] null;
release."2.15".sha256 = "sha256-51k2W4efMaEO4nZ0rdkRT9rA8ZJLpot1YpFmd6RIAXw=";
release."2.14".sha256 = "sha256-NHc1ZQ2VmXZy4lK2+mtyeNz1Qr9Nhj2QLxkPhhQB7Iw=";
release."2.13".sha256 = "sha256-i6rvP3cpayBln5KHZOpeNfraYU5h0O9uciBQ4jRH4XA=";
release."2.12".sha256 = "sha256-4HL0U4HA5/usKNXC0Dis1UZY/Hb/LRd2IGOrqrvdWkw=";
release."2.11.1".sha256 = "sha256-unpNstZBnRT4dIqAYOv9n1J0tWJMeRuaaa2RG1U0Xs0=";
release."2.10".sha256 = "sha256-RIxfPWoHnV1CFkpxCusoGY/LIk07TgC7wWGRP4BSq8w=";
release."2.9".sha256 = "sha256:1adwzbl1pprrrwrm7cm493098fizxanxpv7nyfbvwdhgbhcnv6qf";
release."2.8".sha256 = "sha256-cyK88uzorRfjapNQ6XgQEmlbWnDsiyLve5po1VG52q0=";
releaseRev = v: "v${v}";
buildInputs = [ ITree ];
propagatedBuildInputs = [ compcert ];
preConfigure = ''
patchShebangs util
''
+
lib.optionalString
(coq.coq-version != null && coq.coq-version != "dev" && lib.versions.isLe "8.20" coq.coq-version)
''
substituteInPlace Makefile \
--replace-fail 'COQVERSION= ' 'COQVERSION= 8.20.1 or-else 8.19.2 or-else 8.17.1 or-else 8.16.1 or-else 8.16.0 or-else 8.15.2 or-else 8.15.1 or-else '\
--replace-fail 'FLOYD_FILES=' 'FLOYD_FILES= ${toString extra_floyd_files}'
'';
makeFlags = [
"BITSIZE=64"
"COMPCERT=inst_dir"
"COMPCERT_INST_DIR=${compcert.lib}/lib/coq/${coq.coq-version}/user-contrib/compcert"
"INSTALLDIR=$(out)/lib/coq/${coq.coq-version}/user-contrib/VST"
]
++ lib.optional (coq.coq-version == "dev") "IGNORECOQVERSION=true"
++ lib.optional (coq.coq-version == "dev") "IGNORECOMPCERTVERSION=true";
postInstall = ''
for d in msl veric floyd sepcomp progs64
do
cp -r $d $out/lib/coq/${coq.coq-version}/user-contrib/VST/
done
'';
meta = {
description = "Verified Software Toolchain";
homepage = "https://vst.cs.princeton.edu/";
inherit (compcert.meta) platforms;
};
}

View File

@@ -0,0 +1,24 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "Velisarios";
owner = "vrahli";
inherit version;
defaultVersion = if lib.versions.range "8.6" "8.8" coq.coq-version then "20180221" else null;
release."20180221".rev = "e1eee1f10d5d46331a560bd8565ac101229d0d6b";
release."20180221".sha256 = "0l9885nxy0n955fj1gnijlxl55lyxiv9yjfmz8hmfrn9hl8vv1m2";
mlPlugin = true;
buildPhase = "make -j$NIX_BUILD_CORES";
preBuild = "./create-makefile.sh";
installPhase = ''
mkdir -p $out/lib/coq/${coq.coq-version}/Velisarios
cp -pR model/*.vo $out/lib/coq/${coq.coq-version}/Velisarios
'';
}

View File

@@ -0,0 +1,55 @@
{
lib,
mkCoqDerivation,
coq,
Cheerios,
InfSeqExt,
ssreflect,
version ? null,
}:
mkCoqDerivation {
pname = "verdi";
owner = "uwplse";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.9" "8.18";
out = "20230503";
}
{
case = range "8.7" "8.16";
out = "20211026";
}
{
case = range "8.7" "8.14";
out = "20210524";
}
{
case = range "8.7" "8.13";
out = "20200131";
}
{
case = "8.6";
out = "20181102";
}
] null;
release."20230503".rev = "76833a7b2188e99e358b8439ea6b4f38401c962a";
release."20230503".sha256 = "sha256-g59adl/FLMlk9vZciz2I1ZX4PDCElNOgVPCwML8E4DU=";
release."20211026".rev = "064cc4fb2347453bf695776ed820ffb5fbc1d804";
release."20211026".sha256 = "sha256:13xrcyzay5sjszf5lg4s44wl9nrcz22n6gi4h95pkpj0ni5clinx";
release."20210524".rev = "54597d8ac7ab7dd4dae683f651237644bf77701e";
release."20210524".sha256 = "sha256:05wb0km2jkhvi8807glxk9fi1kll4lwisiyzkxhqvymz4x6v8xqv";
release."20200131".rev = "fdb4ede19d2150c254f0ebcfbed4fb9547a734b0";
release."20200131".sha256 = "1a2k19f9q5k5djbxplqmmpwck49kw3lrm3aax920h4yb40czkd8m";
release."20181102".rev = "25b79cf1be5527ab8dc1b8314fcee93e76a2e564";
release."20181102".sha256 = "1vw47c37k5vaa8vbr6ryqy8riagngwcrfmb3rai37yi9xhdqg55z";
propagatedBuildInputs = [
Cheerios
InfSeqExt
ssreflect
];
}

View File

@@ -0,0 +1,25 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "Vpl";
owner = "VERIMAG-Polyhedra";
inherit version;
defaultVersion = if lib.versions.range "8.8" "8.9" coq.coq-version then "0.5" else null;
release."0.5".sha256 = "sha256-mSD/xSweeK9WMxWDdX/vzN96iXo74RkufjuNvtzsP9o=";
setSourceRoot = "sourceRoot=$(echo */coq)";
meta = {
description = "Coq interface to VPL abstract domain of convex polyhedra";
homepage = "https://amarechal.gitlab.io/home/projects/vpl/";
license = lib.licenses.lgpl3Only;
maintainers = [ lib.maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,24 @@
{
lib,
mkCoqDerivation,
coq,
Vpl,
version ? null,
}:
mkCoqDerivation {
pname = "VplTactic";
owner = "VERIMAG-Polyhedra";
defaultVersion = if lib.versions.isEq "8.9" coq.version then "0.5" else null;
release."0.5".rev = "487e3aff8446bed2c5116cefc7d71d98a06e85de";
release."0.5".sha256 = "sha256-4h0hyvj9R+GOgnGWQFDi0oENLZPiJoimyK1q327qvIY=";
buildInputs = [ coq.ocamlPackages.vpl-core ];
propagatedBuildInputs = [ Vpl ];
mlPlugin = true;
meta = Vpl.meta // {
description = "Coq Tactic for Arithmetic (based on VPL)";
};
}

View File

@@ -0,0 +1,117 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "aac-tactics";
releaseRev = v: "v${v}";
release."8.20.0".sha256 = "sha256-VQzeINIZAfP3Qyh29uPqcNVlNJfIzzRLtN0Cm4EuGCk=";
release."8.19.1".sha256 = "sha256-W/V57h+rjb3m0ktCG83PquMHfXiv6H1Nhvw9sVEPLqM=";
release."8.19.0".sha256 = "sha256-IeCBd8gcu4bAXH5I/XIT7neQIILi+EWR6qqAA4GzQD0=";
release."8.18.0".sha256 = "sha256-Vpe79qCyFLOdOtFFvLKR0N+MMpGD661Q01yx4gxRhZo=";
release."8.17.0".sha256 = "sha256-c8DtD21QFDZEVyCQc7ScPZEMTmolxlT3+Db3gStofF8=";
release."8.16.0".sha256 = "sha256-sE1w8q/60adNF9yMJQO70CEk3D8QUopvgiszdHt5Wsw=";
release."8.15.1".sha256 = "sha256:0k2sl3ns897a5ll11bazgpv4ppgi1vmx4n89v2dnxabm5dglyglp";
release."8.14.1".sha256 = "sha256:1w99jgm7mxwdxnalxhralmhmpwwbd52pbbifq0mx13ixkv6iqm1a";
release."8.14.0".sha256 = "04x47ngb95m1h4jw2gl0v79s5im7qimcw7pafc34gkkf51pyhakp";
release."8.13.2".sha256 = "sha256-MAnMc4KzC551JInrRcfKED4nz04FO0GyyyuDVRmnYTa=";
release."8.13.0".sha256 = "sha256-MAnMc4KzC551JInrRcfKED4nz04FO0GyyyuDVRmnYTY=";
release."8.12.0".sha256 = "sha256-dPNA19kZo/2t3rbyX/R5yfGcaEfMhbm9bo71Uo4ZwoM=";
release."8.11.0".sha256 = "sha256-CKKMiJLltIb38u+ZKwfQh/NlxYawkafp+okY34cGCYU=";
release."8.10.0".sha256 = "sha256-Ny3AgfLAzrz3FnoUqejXLApW+krlkHBmYlo3gAG0JsM=";
release."8.9.0".sha256 = "sha256-6Pp0dgYEnVaSnkJR/2Cawt5qaxWDpBI4m0WAbQboeWY=";
release."8.8.0".sha256 = "sha256-mwIKp3kf/6i9IN3cyIWjoRtW8Yf8cc3MV744zzFM3u4=";
release."8.6.1".sha256 = "sha256-PfovQ9xJnzr0eh/tO66yJ3Yp7A5E1SQG46jLIrrbZFg=";
release."8.5.0".sha256 = "sha256-7yNxJn6CH5xS5w/zsXfcZYORa6e5/qS9v8PUq2o02h4=";
inherit version;
defaultVersion =
lib.switch coq.coq-version [
{
case = "8.20";
out = "8.20.0";
}
{
case = "8.19";
out = "8.19.1";
}
{
case = "8.18";
out = "8.18.0";
}
{
case = "8.17";
out = "8.17.0";
}
{
case = "8.16";
out = "8.16.0";
}
{
case = "8.15";
out = "8.15.1";
}
{
case = "8.14";
out = "8.14.1";
}
{
case = "8.13";
out = "8.13.2";
}
{
case = "8.12";
out = "8.12.0";
}
{
case = "8.11";
out = "8.11.0";
}
{
case = "8.10";
out = "8.10.0";
}
{
case = "8.9";
out = "8.9.0";
}
{
case = "8.8";
out = "8.8.0";
}
{
case = "8.6";
out = "8.6.1";
}
{
case = "8.5";
out = "8.5.0";
}
] null;
mlPlugin = true;
propagatedBuildInputs = [ stdlib ];
meta = with lib; {
description = "Coq plugin providing tactics for rewriting universally quantified equations";
longDescription = ''
This Coq plugin provides tactics for rewriting universally quantified
equations, modulo associativity and commutativity of some operator.
The tactics can be applied for custom operators by registering the
operators and their properties as type class instances. Many common
operator instances, such as for Z binary arithmetic and booleans, are
provided with the plugin.
'';
maintainers = with maintainers; [ siraben ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-ssreflect,
mathcomp-algebra,
mathcomp-fingroup,
paramcoq,
version ? null,
}:
mkCoqDerivation {
pname = "addition-chains";
repo = "hydra-battles";
release."0.4".sha256 = "1f7pc4w3kir4c9p0fjx5l77401bx12y72nmqxrqs3qqd3iynvqlp";
release."0.5".sha256 = "121pcbn6v59l0c165ha9n00whbddpy11npx2y9cn7g879sfk2nqk";
release."0.6".sha256 = "1dri4sisa7mhclf8w4kw7ixs5zxm8xyjr034r1377p96rdk3jj0j";
releaseRev = (v: "v${v}");
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.13" "8.18";
out = "0.6";
}
{
case = range "8.11" "8.12";
out = "0.4";
}
] null;
propagatedBuildInputs = [
mathcomp-ssreflect
mathcomp-algebra
mathcomp-fingroup
paramcoq
];
useDune = true;
meta = with lib; {
description = "Exponentiation algorithms following addition chains";
longDescription = ''
Addition chains are algorithms for computations of the p-th
power of some x, with the least number of multiplication as
possible. We present a few implementations of addition chains,
with proofs of their correctness.
'';
maintainers = with maintainers; [ Zimmi48 ];
license = licenses.mit;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
mkCoqDerivation,
coq,
itree-io,
json,
QuickChick,
version ? null,
}:
mkCoqDerivation {
pname = "async-test";
owner = "liyishuai";
repo = "coq-async-test";
inherit version;
defaultVersion =
let
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
{
case = range "8.12" "8.19";
out = "0.1.0";
}
] null;
release = {
"0.1.0".sha256 = "sha256-0DBUS20337tpBi64mlJIWTQvIAdUvWbFCM9Sat7MEA8=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [
itree-io
json
QuickChick
];
meta = {
description = "From interaction trees to asynchronous tests";
license = lib.licenses.mpl20;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "atbr";
inherit version;
defaultVersion =
let
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
{
case = range "8.20" "8.20";
out = "8.20.0";
}
] null;
release = {
"8.20.0".sha256 = "sha256-Okhtq6Gnq4HA3tEZJvf8JBnmk3OKdm6hC1qINmoShmo=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [ stdlib ];
mlPlugin = true;
meta = {
description = "Coq library and tactic for deciding Kleene algebras";
license = lib.licenses.lgpl3Plus;
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "autosubst-ocaml";
owner = "uds-psl";
release."1.1+9.0".sha256 = "sha256-fCQjmF+0ik2QdKog61VfIv5ERmw+AJO8y5+CWmDGGk0=";
release."1.1+8.20".sha256 = "sha256-S3uKkwbGFsvauP9lKc3UsdszHahbZQhlOOK3fCBXlSE=";
release."1.1+8.19".sha256 = "sha256-AGbhw/6lg4GpDE6hZBhau9DLW7HVXa0UzGvJfSV8oHE=";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = isEq "9.0";
out = "1.1+9.0";
}
{
case = isEq "8.20";
out = "1.1+8.20";
}
{
case = isEq "8.19";
out = "1.1+8.19";
}
] null;
buildInputs = with coq.ocamlPackages; [
angstrom
ocamlgraph
ppx_deriving
ppxlib
];
useDune = true;
buildPhase = ''
dune build
'';
installPhase = ''
dune install --prefix $out --libdir $OCAMLFIND_DESTDIR
'';
meta = with lib; {
description = "OCaml reimplementation of the Autosubst 2 code generator";
homepage = "https://github.com/uds-psl/autosubst-ocaml";
mainProgram = "autosubst";
maintainers = with maintainers; [ chen ];
license = licenses.mit;
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-boot,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "autosubst";
releaseRev = v: "v${v}";
release."1.7".sha256 = "sha256-qoyteQ5W2Noxf12uACOVeHhPLvgmTzrvEo6Ts+FKTGI=";
release."1.8".sha256 = "sha256-n0lD8D+tjqkDDjFiE4CggxczOPS5TkEnxpB3zEwWZ2I=";
release."1.9".sha256 = "sha256-XiLZjMc+1iwRGOstfLm/WQRF6FTdX6oJr5urn3wmLlA=";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.14" "9.1") "1.9")
(case (range "8.14" "8.18") "1.8")
(case (range "8.10" "8.13") "1.7")
] null;
propagatedBuildInputs = [
mathcomp-boot
stdlib
];
meta = with lib; {
homepage = "https://www.ps.uni-saarland.de/autosubst/";
description = "Automation for de Bruijn syntax and substitution in Coq";
maintainers = with maintainers; [
siraben
jwiegley
];
license = licenses.mit;
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "bbv";
owner = "mit-plv";
inherit version;
defaultVersion =
let
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
{
case = range "8.16" "8.19";
out = "1.5";
}
] null;
release = {
"1.5".sha256 = "sha256-8/VPsfhNpuYpLmLC/hWszDhgvS6n8m7BRxUlea8PSUw=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [ stdlib ];
meta = {
description = "Implementation of bitvectors in Coq";
license = lib.licenses.mit;
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
let
derivation = mkCoqDerivation {
pname = "bignums";
owner = "rocq-community";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.13" "8.20") "9.0.0+coq${coq.coq-version}")
(case (range "8.6" "8.17") "${coq.coq-version}.0")
] null;
release."9.0.0+coq8.20".sha256 = "sha256-pkvyDaMXRalc6Uu1eBTuiqTpRauRrzu946c6TavyTKY=";
release."9.0.0+coq8.19".sha256 = "sha256-02uL+qWbUveHe67zKfc8w3U0iN3X2DKBsvP3pKpW8KQ=";
release."9.0.0+coq8.18".sha256 = "sha256-vLeJ0GNKl4M84Uj2tAwlrxJOSR6VZoJQvdlDhxJRge8=";
release."9.0.0+coq8.17".sha256 = "sha256-Mn85LqxJKPDIfpxRef9Uh5POwOKlTQ7jsMVz1wnQwuY=";
release."9.0.0+coq8.16".sha256 = "sha256-pwFTl4Unr2ZIirAB3HTtfhL2YN7G/Pg88RX9AhKWXbE=";
release."9.0.0+coq8.15".sha256 = "sha256-2oGOANn3XULHNIlyqjZ5ppQTQa2QF1zzf3YjHAd/pjo=";
release."9.0.0+coq8.14".sha256 = "sha256-qTU152Dz34W6nFZ0pPbja9ouUm/714ZrLQ/Z4N/HIC4=";
release."9.0.0+coq8.13".sha256 = "sha256-zvAqV3VAB7cN+nlMhjSXzxuDkdd387ju2VSb2EUthI0=";
release."8.17.0".sha256 = "sha256-MXYjqN86+3O4hT2ql62U83T5H03E/8ysH8erpvC/oyw=";
release."8.16.0".sha256 = "sha256-DH3iWwatPlhhCVYVlgL2WLkvneSVzSXUiKo2e0+1zR4=";
release."8.15.0".sha256 = "093klwlhclgyrba1iv18dyz1qp5f0lwiaa7y0qwvgmai8rll5fns";
release."8.14.0".sha256 = "0jsgdvj0ddhkls32krprp34r64y1rb5mwxl34fgaxk2k4664yq06";
release."8.13.0".sha256 = "1n66i7hd9222b2ks606mak7m4f0dgy02xgygjskmmav6h7g2sx7y";
release."8.12.0".sha256 = "14ijb3qy2hin3g4djx437jmnswxxq7lkfh3dwh9qvrds9a015yg8";
release."8.11.0".sha256 = "1xcd7c7qlvs0narfba6px34zq0mz8rffnhxw0kzhhg6i4iw115dp";
release."8.10.0".sha256 = "0bpb4flckn4nqxbs3wjiznyx1k7r8k93qdigp3qwmikp2lxvcbw5";
release."8.9.0".sha256 = "03qz1w2xb2j5p06liz5yyafl0fl9vprcqm6j0iwi7rxwghl00p01";
release."8.8.0".sha256 = "1ymxyrvjygscxkfj3qkq66skl3vdjhb670rzvsvgmwrjkrakjnfg";
release."8.7.0".sha256 = "11c4sdmpd3l6jjl4v6k213z9fhrmmm1xnly3zmzam1wrrdif4ghl";
release."8.6.0".rev = "v8.6.0";
release."8.6.0".sha256 = "0553pcsy21cyhmns6k9qggzb67az8kl31d0lwlnz08bsqswigzrj";
releaseRev = v: "${if lib.versions.isGe "9.0" v then "v" else "V"}${v}";
mlPlugin = true;
propagatedBuildInputs = [ stdlib ];
meta = {
license = lib.licenses.lgpl2;
};
};
in
# this is just a wrapper for rocqPackages.bignums for Rocq >= 9.0
if coq.rocqPackages ? bignums then
coq.rocqPackages.bignums.override {
inherit version stdlib;
inherit (coq.rocqPackages) rocq-core;
}
else
derivation

View File

@@ -0,0 +1,57 @@
{
lib,
mkCoqDerivation,
coq,
ssreflect,
equations,
version ? null,
}:
mkCoqDerivation {
pname = "category-theory";
owner = "jwiegley";
release."1.0.0".sha256 = "sha256-qPgho4/VcL3vyMPJAMXXdqhYPEbNeXSZsoWbA/lGek4=";
release."20211213".rev = "449e30e929d56f6f90c22af2c91ffcc4d79837be";
release."20211213".sha256 = "sha256:0vgfmph5l1zn6j4b851rcm43s8y9r83swsz07rpzhmfg34pk0nl0";
release."20210730".rev = "d87937faaf7460bcd6985931ac36f551d67e11af";
release."20210730".sha256 = "04x7433yvibxknk6gy4971yzb4saa3z4dnfy9n6irhyafzlxyf0f";
release."20190414".rev = "706fdb4065cc2302d92ac2bce62cb59713253119";
release."20190414".sha256 = "16lg4xs2wzbdbsn148xiacgl4wq4xwfqjnjkdhfr3w0qh1s81hay";
release."20180709".rev = "3b9ba7b26a64d49a55e8b6ccea570a7f32c11ead";
release."20180709".sha256 = "0f2nr8dgn1ab7hr7jrdmr1zla9g9h8216q4yf4wnff9qkln8sbbs";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.14" "8.17";
out = "1.0.0";
}
{
case = range "8.10" "8.15";
out = "20211213";
}
{
case = range "8.8" "8.9";
out = "20190414";
}
{
case = range "8.6" "8.7";
out = "20180709";
}
] null;
mlPlugin = true;
propagatedBuildInputs = [
ssreflect
equations
];
meta = {
description = "Formalization of category theory in Coq for personal study and practical work";
maintainers = with lib.maintainers; [ jwiegley ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "ceres";
repo = "coq-ceres";
owner = "Lysxia";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.version [
(case (range "8.14" "9.1") "0.4.1")
(case (range "8.8" "8.16") "0.4.0")
] null;
release."0.4.1".sha256 = "sha256-9vyk8/8IVsqNyhw3WPzl8w3L9Wu7gfaMVa3n2nWjFiA=";
release."0.4.0".sha256 = "sha256:0zwp3pn6fdj0qdig734zdczrls886al06mxqhhabms0jvvqijmbi";
useDuneifVersion = lib.versions.isGe "0.4.1";
propagatedBuildInputs = [ stdlib ];
meta = with lib; {
description = "Library for serialization to S-expressions";
license = licenses.mit;
maintainers = with maintainers; [ Zimmi48 ];
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "coinduction";
owner = "damien-pous";
inherit version;
defaultVersion =
let
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
{
case = range "8.19" "8.19";
out = "1.9";
}
] null;
release = {
"1.9".sha256 = "sha256-bBU+xDklnzJBeN41GarW5KXzD8eKsOYtb//ULYumwWE=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [ stdlib ];
mlPlugin = true;
meta = {
description = "Library for doing proofs by (enhanced) coinduction";
license = lib.licenses.lgpl3Plus;
};
}

View File

@@ -0,0 +1,328 @@
{
lib,
mkCoqDerivation,
coq,
flocq,
MenhirLib,
ocamlPackages,
fetchpatch,
makeWrapper,
coq2html,
stdenv,
tools ? stdenv.cc,
version ? null,
}:
let
# https://compcert.org/man/manual002.html
targets = {
x86_64-linux = "x86_64-linux";
aarch64-linux = "aarch64-linux";
x86_64-darwin = "x86_64-macos";
aarch64-darwin = "aarch64-macos";
riscv32-linux = "rv32-linux";
riscv64-linux = "rv64-linux";
};
target =
targets.${stdenv.hostPlatform.system}
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
compcert = mkCoqDerivation {
pname = "compcert";
owner = "AbsInt";
inherit version;
releaseRev = v: "v${v}";
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.15" "9.0";
out = "3.16";
}
{
case = range "8.14" "8.20";
out = "3.15";
}
{
case = isEq "8.13";
out = "3.10";
}
{
case = isEq "8.12";
out = "3.9";
}
{
case = range "8.8" "8.11";
out = "3.8";
}
] null;
release = {
"3.8".sha256 = "1gzlyxvw64ca12qql3wnq3bidcx9ygsklv9grjma3ib4hvg7vnr7";
"3.9".sha256 = "1srcz2dqrvmbvv5cl66r34zqkm0hsbryk7gd3i9xx4slahc9zvdb";
"3.10".sha256 = "sha256:19rmx8r8v46101ij5myfrz60arqjy7q3ra3fb8mxqqi3c8c4l4j6";
"3.11".sha256 = "sha256-ZISs/ZAJVWtxp9+Sg5qV5Rss1gI9hK769GnBfawLa6A=";
"3.12".sha256 = "sha256-hXkQ8UnAx3k50OJGBmSm4hgrnRFCosu4+PEMrcKfmV0=";
"3.13".sha256 = "sha256-ZedxgEPr1ZgKIcyhQ6zD1l2xr6RDNNUYq/4ZyR6ojM4=";
"3.13.1".sha256 = "sha256-ldXbuzVB0Z+UVTd5S4yGSg6oRYiKbXLMmUZcQsJLcns=";
"3.14".sha256 = "sha256-QXJMpp/BaPiK5okHeo2rcmXENToXKjB51UqljMHTDgw=";
"3.15".sha256 = "sha256-QFTueGZd0hAWUj+c5GZL/AyNpfN4FuJiIzCICmwRXJ8=";
"3.16".sha256 = "sha256-Ep8bcSFs3Cu+lV5qgo89JJU2vh4TTq66Or0c4evo3gM=";
};
strictDeps = true;
nativeBuildInputs = with ocamlPackages; [
makeWrapper
ocaml
findlib
menhir
coq
coq2html
];
buildInputs = with ocamlPackages; [ menhirLib ];
propagatedBuildInputs = [
flocq
MenhirLib
];
enableParallelBuilding = true;
postPatch = ''
substituteInPlace ./configure \
--replace \$\{toolprefix\}ar 'ar' \
--replace '{toolprefix}gcc' '{toolprefix}cc'
'';
configurePhase = ''
./configure -clightgen \
-prefix $out \
-coqdevdir $lib/lib/coq/${coq.coq-version}/user-contrib/compcert/ \
-toolprefix ${tools}/bin/ \
-use-external-Flocq \
-use-external-MenhirLib \
${target} \
''; # don't remove the \ above, the command gets appended in override below
installTargets = "documentation install";
installFlags = [ ]; # trust ./configure
preInstall = ''
mkdir -p $out/share/man
mkdir -p $man/share
'';
postInstall = ''
# move man into place
mv $out/share/man/ $man/share/
# move docs into place
mkdir -p $doc/share/doc/compcert
mv doc/html $doc/share/doc/compcert/
# wrap ccomp to undefine _FORTIFY_SOURCE; ccomp invokes cc1 which sets
# _FORTIFY_SOURCE=2 by default, but undefines __GNUC__ (as it should),
# which causes a warning in libc. this suppresses it.
for x in ccomp clightgen; do
wrapProgram $out/bin/$x --add-flags "-U_FORTIFY_SOURCE"
done
'';
outputs = [
"out"
"lib"
"doc"
"man"
];
meta = with lib; {
description = "Formally verified C compiler";
homepage = "https://compcert.org";
license = licenses.inria-compcert;
platforms = builtins.attrNames targets;
maintainers = with maintainers; [
thoughtpolice
jwiegley
vbgl
];
};
};
patched_compcert = compcert.overrideAttrs (o: {
patches =
with lib.versions;
lib.switch [ coq.version o.version ]
[
{
cases = [
(range "8.12.2" "8.13.2")
"3.8"
];
out = [
# Support for Coq 8.12.2
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/06956421b4307054af221c118c5f59593c0e67b9.patch";
sha256 = "1f90q6j3xfvnf3z830bkd4d8526issvmdlrjlc95bfsqs78i1yrl";
})
# Support for Coq 8.13.0
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/0895388e7ebf9c9f3176d225107e21968919fb97.patch";
sha256 = "0qhkzgb2xl5kxys81pldp3mr39gd30lvr2l2wmplij319vp3xavd";
})
# Support for Coq 8.13.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/6bf310dd678285dc193798e89fc2c441d8430892.patch";
sha256 = "026ahhvpj5pksy90f8pnxgmhgwfqk4kwyvcf8x3dsanvz98d4pj5";
})
# Drop support for Coq < 8.9
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/7563a5df926a4c6fb1489a7a4c847641c8a35095.patch";
sha256 = "05vkslzy399r3dm6dmjs722rrajnyfa30xsyy3djl52isvn4gyfb";
})
# Support for Coq 8.13.2
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/48bc183167c4ce01a5c9ea86e49d60530adf7290.patch";
sha256 = "0j62lppfk26d1brdp3qwll2wi4gvpx1k70qivpvby5f7dpkrkax1";
})
];
}
{
cases = [
(range "8.14" "8.15")
"3.10"
];
out = [
# Support for Coq 8.14.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/a79f0f99831aa0b0742bf7cce459cc9353bd7cd0.patch";
sha256 = "sha256:0g20x8gfzvplpad9y9vr1p33k6qv6rsp691x6687v9ffvz7zsz94";
})
# Support for Coq 8.15.0
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/a882f78c069f7337dd9f4abff117d4df98ef38a6.patch";
sha256 = "sha256:16i87s608fj9ni7cvd5wrd7gicqniad7w78wi26pxdy0pacl7bjg";
})
# Support for Coq 8.15.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/10a976994d7fd30d143354c289ae735d210ccc09.patch";
sha256 = "sha256:0bg58gpkgxlmxzp6sg0dvybrfk0pxnm7qd6vxlrbsbm2w6wk03jv";
})
# Support for Coq 8.15.2
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/283a5be7296c4c0a94d863b427c77007ab875733.patch";
sha256 = "sha256:1s7hvb5ii3p8kkcjlzwldvk8xc3iiibxi9935qjbrh25xi6qs66k";
})
];
}
{
cases = [
(isEq "8.16")
(range "3.11" "3.12")
];
out = [
# Support for Coq 8.16.0
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/34be08a23d18d56f2dde24fd24b6dbe3bcb01ec3.patch";
sha256 = "sha256-a5YnftGVadVypEqrOYRRxI7YtGOEWyKnO4GqakFhvzI=";
})
# Support for Coq 8.16.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/35531503b3493cb9b0ec8a8585e84928c85b4af9.patch";
hash = "sha256-DvtYi/eiPUe8tA0EFTcCjJA0JjtVKceUsX4ZDM0pWkE=";
})
];
}
{
cases = [
(range "8.17" "8.19")
(isEq "3.13")
];
out = [
# Support for Coq 8.17.0 & Coq 8.17.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/2e04d986bdae578186e40330842878559a550402.patch";
hash = "sha256-2ZRAjUUSScJI8ogWFTnukCUnJdLWGvyOPyfIVlHL4ig=";
})
# Support for Coq 8.18.0
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/28218c5663cba36c6078ca342335d4e55c412bd7.patch";
hash = "sha256-aAatUMO26oZwFYGh1BXYWxbTuyOgU8BAKMGDS5796hM=";
})
# MenhirLib update
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/9f3d7b6eb99377ad4689cd57563c484c57baa457.patch";
hash = "sha256-paofdSBxP/JFoBSiO1OI+mjKRI3UCanXRh/drzYt93E=";
})
# Support for Coq 8.19.0 & Coq 8.19.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/a2e4ed62fc558d565366845f9d135bd7db5e23c4.patch";
hash = "sha256-ufk0bokuayLfkSvK3cK4E9iXU5eZpp9d/ETSa/zCfMg=";
})
# Support for Coq 8.19.2
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/8fcfb7d2a6e9ba44003ccab0dfcc894982779af1.patch";
hash = "sha256-m/kcnDBBPWFriipuGvKZUqLQU8/W1uqw8j4qfCwnTZk=";
})
];
}
{
cases = [
(range "8.19" "8.20")
(isEq "3.14")
];
out = [
# Support for Coq 8.19.2
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/8fcfb7d2a6e9ba44003ccab0dfcc894982779af1.patch";
hash = "sha256-m/kcnDBBPWFriipuGvKZUqLQU8/W1uqw8j4qfCwnTZk=";
})
# Support for Coq 8.20.0
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/20a5b48758bf8ac18e4c420df67017b371efc237.patch";
hash = "sha256-TJ87CvLiAv1absGnPsTXsD/HQwKgS82loUTcosulyso=";
})
# Support for Coq 8.20.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/e6c9a2d068ae67923bbc7c6b7035b6afde6ece3c.patch";
hash = "sha256-PtiEkG/aLRotIiqrmc6SQncQSi7IGSC5QX3e52xkOUQ=";
})
];
}
{
cases = [
(isEq "8.20")
(isEq "3.15")
];
out = [
# Support for Coq 8.20.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/e524b0a19ae5140f64047b1cba6ebbe1d16d5bbf.patch";
hash = "sha256-24kt0hA75ooyXymH+kNS5VlsuXMHbkqTw4m+BzNUwrw=";
})
];
}
{
cases = [
(isEq "9.0")
(isEq "3.16")
];
out = [
# Support for Coq 9.0.1
(fetchpatch {
url = "https://github.com/AbsInt/CompCert/commit/a962ef9da0fb4ef2a4314ccedd111eb248e42cf2.patch";
hash = "sha256-ipYqcfcgz3cKyI1NGSgfOgiVdV1WUwlv6DVB1S1hJvw=";
})
];
}
]
[ ];
});
in
patched_compcert.overrideAttrs (
o:
lib.optionalAttrs (coq.version != null && coq.version == "dev") {
configurePhase = "${o.configurePhase} -ignore-ocaml-version -ignore-coq-version";
}
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp,
mathcomp-algebra-tactics,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "coq-bits";
repo = "bits";
inherit version;
defaultVersion =
with lib.versions;
lib.switch
[ coq.version mathcomp.version ]
[
{
cases = [
(range "8.10" "8.16")
(isLt "2.0")
];
out = "1.1.0";
}
{
cases = [
(range "8.7" "8.15")
(isLt "2.0")
];
out = "1.0.0";
}
]
null;
release."1.1.0".sha256 = "sha256-TCw1kSXeW0ysIdLeNr+EGmpGumEE9i8tinEMp57UXaE=";
release."1.0.0".sha256 = "0nv5mdgrd075dpd8bc7h0xc5i95v0pkm0bfyq5rj6ii1s54dwcjl";
propagatedBuildInputs = [
mathcomp.algebra
mathcomp-algebra-tactics
stdlib
];
meta = with lib; {
description = "Formalization of bitset operations in Coq";
license = licenses.asl20;
maintainers = with maintainers; [ ptival ];
};
}

View File

@@ -0,0 +1,164 @@
{
lib,
mkCoqDerivation,
which,
coq,
stdlib,
version ? null,
elpi-version ? null,
}:
let
default-elpi-version =
if elpi-version != null then
elpi-version
else
(
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.20" "8.20") "2.0.7")
(case (range "8.18" "8.19") "1.18.1")
(case (range "8.16" "8.17") "1.17.0")
(case "8.15" "1.15.0")
(case (range "8.13" "8.14") "1.13.7")
(case "8.12" "1.12.0")
(case "8.11" "1.11.4")
] { }
);
elpi = coq.ocamlPackages.elpi.override { version = default-elpi-version; };
propagatedBuildInputs_wo_elpi = [
coq.ocamlPackages.findlib
];
derivation = mkCoqDerivation {
pname = "elpi";
repo = "coq-elpi";
owner = "LPCIC";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.20" "8.20") "2.6.0")
(case (range "8.20" "8.20") "2.5.2")
(case "8.19" "2.0.1")
(case "8.18" "2.0.0")
(case "8.17" "1.18.0")
(case "8.16" "1.15.6")
(case "8.15" "1.14.0")
(case "8.14" "1.11.2")
(case "8.13" "1.11.1")
(case "8.12" "1.8.3_8.12")
(case "8.11" "1.6.3_8.11")
] null;
release."2.6.0".sha256 = "sha256-23BHq1NFUkI3ayXnGUwiGFySLyY3EuH4RyMgAhQqI4g=";
release."2.5.2".sha256 = "sha256-lLzjPrbVB3rrqox528YiheUb0u89R84Xmrgkn0oplOs=";
release."2.5.0".sha256 = "sha256-Z5xjO83X/ZoTQlWnVupGXPH3HuJefr57Kv128I0dltg=";
release."2.4.0".sha256 = "sha256-W2+vVGExLLux8e0nSZESSoMVvrLxhL6dmXkb+JuKiqc=";
release."2.3.0".sha256 = "sha256-XVOI+s8Qpa7f17+Xq0y7IGPLFeJqo+cDcd3zfMuO7UU=";
release."2.2.0".sha256 = "sha256-rADEoqTXM7/TyYkUKsmCFfj6fjpWdnZEOK++5oLfC/I=";
release."2.0.1".sha256 = "sha256-cuoPsEJ+JRLVc9Golt2rJj4P7lKltTrrmQijjoViooc=";
release."2.0.0".sha256 = "sha256-A/cH324M21k3SZ7+YWXtaYEbu6dZQq3K0cb1RMKjbsM=";
release."1.19.0".sha256 = "sha256-kGoo61nJxeG/BqV+iQaV3iinwPStND+7+fYMxFkiKrQ=";
release."1.18.0".sha256 = "sha256-2fCOlhqi4YkiL5n8SYHuc3pLH+DArf9zuMH7IhpBc2Y=";
release."1.17.0".sha256 = "sha256-J8GatRKFU0ekNCG3V5dBI+FXypeHcLgC5QJYGYzFiEM=";
release."1.15.6".sha256 = "sha256-qc0q01tW8NVm83801HHOBHe/7H1/F2WGDbKO6nCXfno=";
release."1.15.1".sha256 = "sha256-NT2RlcIsFB9AvBhMxil4ZZIgx+KusMqDflj2HgQxsZg=";
release."1.14.0".sha256 = "sha256:1v2p5dlpviwzky2i14cj7gcgf8cr0j54bdm9fl5iz1ckx60j6nvp";
release."1.13.0".sha256 = "1j7s7dlnjbw222gnbrsjgmjck1yrx7h6hwm8zikcyxi0zys17w7n";
release."1.12.1".sha256 = "sha256-4mO6/co7NcIQSGIQJyoO8lNWXr6dqz+bIYPO/G0cPkY=";
release."1.11.2".sha256 = "0qk5cfh15y2zrja7267629dybd3irvxk1raz7z8qfir25a81ckd4";
release."1.11.1".sha256 = "10j076vc2hdcbm15m6s7b6xdzibgfcbzlkgjnlkr2vv9k13qf8kc";
release."1.10.1".sha256 = "1zsyx26dvj7pznfd2msl2w7zbw51q1nsdw0bdvdha6dga7ijf7xk";
release."1.9.7".sha256 = "0rvn12h9dpk9s4pxy32p8j0a1h7ib7kg98iv1cbrdg25y5vs85n1";
release."1.9.5".sha256 = "0gjdwmb6bvb5gh0a6ra48bz5fb3pr5kpxijb7a8mfydvar5i9qr6";
release."1.9.4".sha256 = "0nii7238mya74f9g6147qmpg6gv6ic9b54x5v85nb6q60d9jh0jq";
release."1.9.3".sha256 = "198irm800fx3n8n56vx1c6f626cizp1d7jfkrc6ba4iqhb62ma0z";
release."1.9.2".sha256 = "1rr2fr8vjkc0is7vh1461aidz2iwkigdkp6bqss4hhv0c3ijnn07";
release."1.8.3_8.12".sha256 = "15z2l4zy0qpw0ws7bvsmpmyv543aqghrfnl48nlwzn9q0v89p557";
release."1.8.3_8.12".version = "1.8.3";
release."1.8.2_8.12".sha256 = "1n6jwcdazvjgj8vsv2r9zgwpw5yqr5a1ndc2pwhmhqfl04b5dk4y";
release."1.8.2_8.12".version = "1.8.2";
release."1.8.1".sha256 = "1fbbdccdmr8g4wwpihzp4r2xacynjznf817lhijw6kqfav75zd0r";
release."1.8.0".sha256 = "13ywjg94zkbki22hx7s4gfm9rr87r4ghsgan23xyl3l9z8q0idd1";
release."1.7.0".sha256 = "1ws5cqr0xawv69prgygbl3q6dgglbaw0vc397h9flh90kxaqgyh8";
release."1.6.3_8.11".sha256 = "1j340cr2bv95clzzkkfmsjkklham1mj84cmiyprzwv20q89zr1hp";
release."1.6.3_8.11".version = "1.6.3";
release."1.6.2_8.11".sha256 = "06xrx0ljilwp63ik2sxxr7h617dgbch042xfcnfpy5x96br147rn";
release."1.6.2_8.11".version = "1.6.2";
release."1.6.1_8.11".sha256 = "0yyyh35i1nb3pg4hw7cak15kj4y6y9l84nwar9k1ifdsagh5zq53";
release."1.6.1_8.11".version = "1.6.1";
release."1.6.0_8.11".sha256 = "0ahxjnzmd7kl3gl38kyjqzkfgllncr2ybnw8bvgrc6iddgga7bpq";
release."1.6.0_8.11".version = "1.6.0";
release."1.6.0".sha256 = "0kf99i43mlf750fr7fric764mm495a53mg5kahnbp6zcjcxxrm0b";
releaseRev = v: "v${v}";
buildFlags = [ "OCAMLWARN=" ];
mlPlugin = true;
useDuneifVersion = v: lib.versions.isGe "2.2.0" v || v == "dev";
propagatedBuildInputs = propagatedBuildInputs_wo_elpi ++ [ elpi ];
preConfigure = ''
make elpi/dune || true
'';
meta = {
description = "Coq plugin embedding ELPI";
maintainers = [ lib.maintainers.cohencyril ];
license = lib.licenses.lgpl21Plus;
};
};
patched-derivation1 = derivation.overrideAttrs (
o:
lib.optionalAttrs (o ? elpi-version) {
propagatedBuildInputs = propagatedBuildInputs_wo_elpi ++ [
(coq.ocamlPackages.elpi.override { version = o.elpi-version; })
];
}
);
patched-derivation2 = patched-derivation1.overrideAttrs (
o:
lib.optionalAttrs (o.version != null && (o.version == "dev" || lib.versions.isGe "2.2.0" o.version))
{
propagatedBuildInputs = o.propagatedBuildInputs ++ [ coq.ocamlPackages.ppx_optcomp ];
}
);
patched-derivation3 = patched-derivation2.overrideAttrs (
o:
lib.optionalAttrs (o.version != null && o.version == "2.4.0") {
propagatedBuildInputs = o.propagatedBuildInputs ++ [ stdlib ];
}
);
patched-derivation4 = patched-derivation3.overrideAttrs (
o:
lib.optionalAttrs (o.version != null && (o.version == "dev" || lib.versions.isGe "2.5.0" o.version))
{
configurePhase = ''
make dune-files || true
'';
buildPhase = ''
dune build -p rocq-elpi @install ''${enableParallelBuilding:+-j $NIX_BUILD_CORES}
'';
installPhase = ''
dune install --root . rocq-elpi --prefix=$out --libdir $OCAMLFIND_DESTDIR
mkdir $out/lib/coq/
mv $OCAMLFIND_DESTDIR/coq $out/lib/coq/${coq.coq-version}
'';
}
);
in
# this is just a wrapper for rocqPackages.stdlib for Rocq >= 9.0
if coq.rocqPackages ? rocq-elpi then
coq.rocqPackages.rocq-elpi.override {
inherit version elpi-version;
inherit (coq.rocqPackages) rocq-core;
}
else
patched-derivation4

View File

@@ -0,0 +1,33 @@
{
mkCoqDerivation,
coq,
coq-hammer-tactics,
version ? null,
}:
mkCoqDerivation {
inherit version;
pname = "coq-hammer";
inherit (coq-hammer-tactics)
owner
repo
defaultVersion
release
releaseRev
;
buildFlags = [ "plugin" ];
installTargets = [ "install-plugin" ];
extraInstallFlags = [ "BINDIR=$(out)/bin/" ];
mlPlugin = true;
propagatedBuildInputs = [
coq.ocamlPackages.findlib
coq-hammer-tactics
];
meta = coq-hammer-tactics.meta // {
description = "General-purpose automated reasoning hammer tool for Coq";
};
}

View File

@@ -0,0 +1,83 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
let
owner = "lukaszcz";
repo = "coqhammer";
defaultVersion =
lib.switch coq.coq-version [
{
case = "8.20";
out = "1.3.2+8.20";
}
{
case = "8.19";
out = "1.3.2+8.19";
}
{
case = "8.18";
out = "1.3.2+8.18";
}
{
case = "8.17";
out = "1.3.2+8.17";
}
{
case = "8.16";
out = "1.3.2+8.16";
}
] null;
release = {
"1.3.2+8.20".sha256 = "sha256-RuX2aInSjwebs/aEOoisNxqcIPqDA2kWehN9tFYqOx4=";
"1.3.2+8.19".sha256 = "sha256-Zd7piAWlKPAZKEz7HVWxhnzOLbA/eR9C/E0T298MJVY=";
"1.3.2+8.18".sha256 = "sha256-D+tQ+1YrSbbqc54U5UlxW1Hhly49TB2pu1LEPL2Eo64=";
"1.3.2+8.17".sha256 = "sha256-2fw66z3yFKs5g+zNCeYXiEyxPzjUr+lGDciiQiuuMAs=";
"1.3.2+8.16".sha256 = "sha256-+j2Mg9n4heXbhjRaqiTQfgBxRqfw6TPYbIuCdhu8OeE=";
};
releaseRev = v: "refs/tags/v${v}";
in
mkCoqDerivation {
inherit version;
pname = "coq-hammer-tactics";
inherit
owner
repo
defaultVersion
release
releaseRev
;
passthru = {
inherit
owner
repo
defaultVersion
release
releaseRev
;
};
propagatedBuildInputs = [ stdlib ];
mlPlugin = true;
buildFlags = [ "tactics" ];
installTargets = [ "install-tactics" ];
meta = {
description = "Reconstruction tactics for the hammer for Coq";
homepage = "https://github.com/lukaszcz/coqhammer";
license = lib.licenses.lgpl21;
maintainers = [ lib.maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
mkCoqDerivation,
coq,
ssreflect,
version ? null,
}:
mkCoqDerivation {
pname = "coq-haskell";
owner = "jwiegley";
inherit version;
defaultVersion = if lib.versions.range "8.5" "8.8" coq.coq-version then "20171215" else null;
release."20171215".rev = "e2cf8b270c2efa3b56fab1ef6acc376c2c3de968";
release."20171215".sha256 = "09dq1vvshhlhgjccrhqgbhnq2hrys15xryfszqq11rzpgvl2zgdv";
mlPlugin = true;
extraInstallFlags = [ "-f Makefile.coq" ];
propagatedBuildInputs = [
coq
ssreflect
];
enableParallelBuilding = false;
meta = {
description = "Library for formalizing Haskell types and functions in Coq";
maintainers = with lib.maintainers; [ jwiegley ];
};
}

View File

@@ -0,0 +1,11 @@
--- a/coq/loader.ml 2024-11-14 17:54:36.562137810 +0100
+++ b/coq/loader.ml 2024-11-14 17:55:01.485154767 +0100
@@ -81,7 +81,7 @@
Exninfo.iraise iexn
let plugin_handler user_loader =
- let loader = Option.default (Fl_dynload.load_packages ~debug:false) user_loader in
+ let loader = Option.default (Fl_dynload.load_packages ?loadfile:None ~debug:false) user_loader in
let safe_loader = safe_loader loader in
fun fl_pkg ->
let _, fl_pkg = Mltop.PluginSpec.repr fl_pkg in

View File

@@ -0,0 +1,121 @@
{
lib,
mkCoqDerivation,
coq,
serapi,
makeWrapper,
version ? null,
}:
(mkCoqDerivation rec {
pname = "coq-lsp";
owner = "ejgallego";
namePrefix = [ ];
useDune = true;
release."0.1.8+8.16".sha256 = "sha256-dEEAK5IXGjHB8D/fYJRQG/oCotoXJuWLxXB0GQlY2eo=";
release."0.2.3+8.17".sha256 = "sha256-s7GXRYxuCMXm0XpKAyEwYqolsVFcKHhM71uabqqK5BY=";
release."0.2.3+8.18".sha256 = "sha256-0cEuMWuNJwfiPdc0aHKk3EQbkVRIbVukS586EWSHCgo=";
release."0.2.3+8.19".sha256 = "sha256-0eQQheY2yjS7shifhUlVPLXvTmyvgNpx7deLWXBRTfA=";
release."0.2.3+8.20".sha256 = "sha256-TUVS8jkgf1MMOOx5y70OaeZkdIgdgmyGQ2/zKxeplEk=";
release."0.2.3+9.0".sha256 = "sha256-eZMM4gYRXQroEIKz6XlffyHNYryEF5dIeIoVbEulh6M=";
release."0.2.4+8.20".sha256 = "sha256-mQxh2/Cb5hZ99TtqWYLpZ/BRPrm5GRDYPDfKlCTK9N4=";
release."0.2.4+9.0".sha256 = "sha256-ICPdNxJODNqmUErdTkNk7s52MRuINWLbAPm0rmXFW18=";
release."0.2.4+9.1".sha256 = "sha256-HNHA2vbX70oZkd4QtbP28UbTRXatqxJdxw1OWDVDE8U=";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = isEq "8.16";
out = "0.1.8+8.16";
}
{
case = isEq "8.17";
out = "0.2.3+8.17";
}
{
case = isEq "8.18";
out = "0.2.3+8.18";
}
{
case = isEq "8.19";
out = "0.2.3+8.19";
}
{
case = isEq "8.20";
out = "0.2.4+8.20";
}
{
case = isEq "9.0";
out = "0.2.4+9.0";
}
{
case = isEq "9.1";
out = "0.2.4+9.1";
}
] null;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
dune install -p ${pname} --prefix=$out --libdir $OCAMLFIND_DESTDIR
wrapProgram $out/bin/coq-lsp --prefix OCAMLPATH : $OCAMLPATH
runHook postInstall
'';
propagatedBuildInputs = with coq.ocamlPackages; [
dune-build-info
menhir
result
uri
yojson
];
meta = with lib; {
description = "Language Server Protocol and VS Code Extension for Coq";
homepage = "https://github.com/ejgallego/coq-lsp";
changelog = "https://github.com/ejgallego/coq-lsp/blob/${defaultVersion}/CHANGES.md";
maintainers = with maintainers; [ alizter ];
license = licenses.lgpl21Only;
};
}).overrideAttrs
(
o: with coq.ocamlPackages; {
propagatedBuildInputs =
o.propagatedBuildInputs
++ (
if o.version != null && lib.versions.isLe "0.1.9+8.19" o.version && o.version != "dev" then
[
camlp-streams
serapi
]
else if o.version != null && lib.versions.isLe "0.2.3" o.version && o.version != "dev" then
[
cmdliner
ppx_deriving
ppx_deriving_yojson
ppx_import
ppx_sexp_conv
ppx_compare
ppx_hash
sexplib
]
else
[
cmdliner
ppx_deriving_yojson
ppx_hash
ppx_import
ppx_sexp_conv
sexplib
tyxml
]
);
patches = lib.optional (lib.versions.isEq "0.1.8" o.version) ./coq-loader.patch;
}
)

View File

@@ -0,0 +1,28 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
owner = "zhengpushi";
pname = "CoqMatrix";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.11" "8.18";
out = "1.0.6";
}
] null;
release = {
"1.0.6".sha256 = "sha256-XsM3fSstvB6GE5OqT7CFro+RWiYEgJsoQ5gXd74VaK0=";
};
meta = {
homepage = "https://github.com/zhengpushi/CoqMatrix";
description = "Matrix math";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ damhiya ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "coq-record-update";
owner = "tchajed";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.14" "9.1") "0.3.6")
(case (range "8.10" "9.1") "0.3.4")
] null;
release."0.3.6".sha256 = "sha256-Sd9cmRPb/0MDlR9mzbFrrF9ifP/2vd0KG6u5fGOydds=";
release."0.3.5".sha256 = "sha256-n2HjGD45Ikwhle8jKjum+Hv+4WrpEqKEbJ6iKfwlQKw=";
release."0.3.4".sha256 = "sha256-AhEcugUiVIsgbq884Lur/bQIuGw8prk+3AlNkP1omcw=";
release."0.3.3".sha256 = "sha256-HDIPeFHiC9EwhiOH7yMGJ9d2zJMhboTpRGf9kWcB9Io=";
release."0.3.1".sha256 = "sha256-DyGxO2tqmYZZluXN6Oy5Tw6fuLMyuyxonj8CCToWKkk=";
release."0.3.0".sha256 = "1ffr21dd6hy19gxnvcd4if2450iksvglvkd6q5713fajd72hmc0z";
releaseRev = v: "v${v}";
buildFlags = [ "NO_TEST=1" ];
meta = {
description = "Library to create Coq record update functions";
maintainers = with lib.maintainers; [ ineol ];
};
}

View File

@@ -0,0 +1,39 @@
{
coq,
lib,
mkCoqDerivation,
version ? null,
}:
mkCoqDerivation {
pname = "coq-tactical";
owner = "tchajed";
inherit version;
displayVersion.coq-tactical = v: "unstable-${v}";
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.11" "8.20";
out = "2022-02-15";
}
] null;
release."2022-02-15" = {
rev = "7c26f9a017395c240845184dfed23489d29dbae5";
sha256 = "sha256-SNoQzGYw5tuabHUDwMAyUsAa/WNoYjmyR85b7a0hVl4=";
};
installPhase = ''
COQLIB=$out/lib/coq/${coq.coq-version}
mkdir -p $COQLIB/user-contrib/Tactical
cp -pR src/* $COQLIB/user-contrib/Tactical
'';
meta = {
description = "Library of Coq proof automation";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ stepbrobd ];
};
}

View File

@@ -0,0 +1,80 @@
{
coq,
mkCoqDerivation,
mathcomp,
bignums,
paramcoq,
multinomials,
mathcomp-real-closed,
lib,
version ? null,
}:
let
derivation = mkCoqDerivation {
pname = "CoqEAL";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.20" "9.1") (isGe "2.3.0") "2.1.0")
(case (range "8.16" "8.20") (isGe "2.1.0") "2.0.3")
(case (range "8.16" "8.20") (isGe "2.0.0") "2.0.1")
(case (range "8.16" "8.17") (isGe "2.0.0") "2.0.0")
(case (range "8.15" "8.18") (range "1.15.0" "1.18.0") "1.1.3")
(case (range "8.13" "8.17") (range "1.13.0" "1.18.0") "1.1.1")
(case (range "8.10" "8.15") (range "1.12.0" "1.18.0") "1.1.0")
(case (isGe "8.10") (range "1.11.0" "1.12.0") "1.0.5")
(case (isGe "8.7") "1.11.0" "1.0.4")
(case (isGe "8.7") "1.10.0" "1.0.3")
]
null;
release."2.1.0".sha256 = "sha256-UoDxy2BKraDyRsO42GXRo26O74OF51biZQGkIMWLf8Y=";
release."2.0.3".sha256 = "sha256-5lDq7IWlEW0EkNzYPu+dA6KOvRgy53W/alikpDr/Kd0=";
release."2.0.1".sha256 = "sha256-d/IQ4IdS2tpyPewcGobj2S6m2HU+iXQmlvR+ITNIcjI=";
release."2.0.0".sha256 = "sha256-SG/KVnRJz2P+ZxkWVp1dDOnc/JVgigoexKfRUh1Y0GM";
release."1.1.3".sha256 = "sha256-xhqWpg86xbU1GbDtXXInNCTArjjPnWZctWiiasq1ScU=";
release."1.1.1".sha256 = "sha256-ExAdC3WuArNxS+Sa1r4x5aT7ylbCvP/BZXfkdQNAvZ8=";
release."1.1.0".sha256 = "1vyhfna5frkkq2fl1fkg2mwzpg09k3sbzxxpyp14fjay81xajrxr";
release."1.0.6".sha256 = "0lqkyfj4qbq8wr3yk8qgn7mclw582n3fjl9l19yp8cnchspzywx0";
release."1.0.5".sha256 = "0cmvky8glb5z2dy3q62aln6qbav4lrf2q1589f6h1gn5bgjrbzkm";
release."1.0.4".sha256 = "1g5m26lr2lwxh6ld2gykailhay4d0ayql4bfh0aiwqpmmczmxipk";
release."1.0.3".sha256 = "0hc63ny7phzbihy8l7wxjvn3haxx8jfnhi91iw8hkq8n29i23v24";
propagatedBuildInputs = [
mathcomp.algebra
bignums
multinomials
];
meta = {
description = "CoqEAL - The Coq Effective Algebra Library";
license = lib.licenses.mit;
};
};
patched-derivation1 = derivation.overrideAttrs (o: {
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optional (lib.versions.isGe "1.1" o.version || o.version == "dev") mathcomp-real-closed;
});
patched-derivation = patched-derivation1.overrideAttrs (o: {
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optional (lib.versions.isLe "2.0.3" o.version && o.version != "dev") paramcoq;
});
in
patched-derivation

View File

@@ -0,0 +1,55 @@
{
coq,
coq-lsp,
ocamlPackages,
lib,
mkCoqDerivation,
version ? null,
makeWrapper,
}:
mkCoqDerivation rec {
pname = "coqfmt";
owner = "toku-sa-n";
inherit version;
displayVersion.coqfmt = v: "master-${v}";
release."master" = {
rev = "c26ce64d6ad1a1c3cafee38ab4889ad3b68a5c33";
sha256 = "sha256-4Q0z/KUHrJZKeKJDqa9mkxfy9LrGh2xPt561muUFYAY=";
};
namePrefix = [ ];
useDune = true;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = isEq "8.20";
out = "master";
}
] null;
installPhase = ''
runHook preInstall
dune install -p ${pname} --prefix=$out --libdir $OCAMLFIND_DESTDIR
wrapProgram $out/bin/coqfmt --prefix OCAMLPATH : $OCAMLPATH
runHook postInstall
'';
nativeBuildInputs = [ makeWrapper ];
buildInputs = with ocamlPackages; [
dune-build-info
coq-lsp
];
meta = {
description = "CLI tool to format your Coq source code";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ DieracDelta ];
};
}

View File

@@ -0,0 +1,107 @@
###################################################################
# #
# /!\ This coqhammer package is deprecated in favor of coq-hammer #
# #
###################################################################
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
inherit version;
pname = "coqhammer";
owner = "lukaszcz";
defaultVersion =
lib.switch coq.coq-version [
{
case = "8.15";
out = "1.3.2-coq8.15";
}
{
case = "8.14";
out = "1.3.2-coq8.14";
}
{
case = "8.13";
out = "1.3.2-coq8.13";
}
{
case = "8.12";
out = "1.3.2-coq8.12";
}
{
case = "8.11";
out = "1.3.2-coq8.11";
}
{
case = "8.10";
out = "1.3.2-coq8.10";
}
{
case = "8.9";
out = "1.1.1-coq8.9";
}
{
case = "8.8";
out = "1.1-coq8.8";
}
] null;
release."1.3.2-coq8.15".sha256 = "sha256:0n0y9wda8bx88r17ls9541ibxw013ghp73zshgb65bi7ibznbhha";
release."1.3.2-coq8.15".rev = "9a3e689036f12c09800ca3bac05054af0cc49233";
release."1.3.2-coq8.14".sha256 = "sha256:1pvs4p95lr31jb86f33p2q9v8zq3xbci1fk6s6a2g2snfxng1574";
release."1.3.2-coq8.13".sha256 = "sha256:0krsm8qj9lgfbggxv2jhkbk3vy2cz63qypnarnl31fdmpykchi4b";
release."1.3.2-coq8.12".sha256 = "sha256:08mnr13lrdnpims6kf8pk6axf4s8qqs0a71hzg3frkx21d6nawhh";
release."1.3.2-coq8.11".sha256 = "sha256:1z54lmr180rdkv549f0dygxlmamsx3fygvsm0d7rz9j88f2z8kc5";
release."1.3.2-coq8.10".sha256 = "sha256:08d63ckiwjx07hy5smg5c7a6b3m3a8ra4ljk3z6597633dx85cd0";
release."1.3.1-coq8.13".sha256 = "033j6saw24anb1lqbgsg1zynxi2rnxq7pgqwh11k8r8y3xisz78w";
release."1.3.1-coq8.12".sha256 = "0xy3vy4rv8w5ydwb9nq8y4dcimd91yr0hak2j4kn02svssg1kv1y";
release."1.3.1-coq8.11".sha256 = "0i9nlcayq0ac95vc09d1w8sd221gdjs0g215n086qscqjwimnz8j";
release."1.3.1-coq8.10".sha256 = "0aq9qwqx680lkidhb77fmyq403rvfcdxch849x1pzy6a48rz5yra";
release."1.3-coq8.12".sha256 = "1q1y3cwhd98pkm98g71fsdjz85bfwgcz2xn7s7wwmiraifv5l6z8";
release."1.3-coq8.11".sha256 = "08zf8qfna7b9p2myfaz4g7bas3a1q1156x78n5isqivlnqfrjc1b";
release."1.3-coq8.10".sha256 = "1fj8497ir4m79hyrmmmmrag01001wrby0h24wv6525vz0w5py3cd";
release."1.1.1-coq8.9" = {
sha256 = "1knjmz4hr8vlp103j8n4fyb2lfxysnm512gh3m2kp85n6as6fvb9";
rev = "f8b4d81a213aa1f25afbe53c7c9ca1b15e3d42bc";
};
release."1.1-coq8.8" = {
sha256 = "0ms086wp4jmrzyglb8wymchzyflflk01nsfsk4r6qv8rrx81nx9h";
rev = "c3cb54b4d5f33fab372d33c7189861368a08fa22";
};
release."1.3.1-coq8.13".version = "1.3.1";
release."1.3.1-coq8.12".version = "1.3.1";
release."1.3.1-coq8.11".version = "1.3.1";
release."1.3.1-coq8.10".version = "1.3.1";
release."1.3-coq8.12".version = "1.3";
release."1.3-coq8.11".version = "1.3";
release."1.3-coq8.10".version = "1.3";
release."1.1.1-coq8.9".version = "1.1.1";
release."1.1-coq8.9".version = "1.1";
releaseRev = v: "refs/tags/v${v}";
postPatch = ''
substituteInPlace Makefile.coq.local --replace \
'$(if $(COQBIN),$(COQBIN),`coqc -where | xargs dirname | xargs dirname`/bin/)' \
'$(out)/bin/'
substituteInPlace Makefile.coq.local --replace 'g++' 'c++' --replace 'gcc' 'cc'
'';
preInstall = ''
mkdir -p $out/bin
'';
mlPlugin = true;
meta = with lib; {
homepage = "http://cl-informatik.uibk.ac.at/cek/coqhammer/";
description = "Automation for Dependent Type Theory";
license = licenses.lgpl21;
maintainers = [ maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
makeDesktopItem,
copyDesktopItems,
wrapGAppsHook3,
glib,
adwaita-icon-theme,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation rec {
pname = "coqide";
inherit version;
inherit (coq) src;
release."${coq.version}" = { };
defaultVersion = if lib.versions.range "8.14" "8.20" coq.version then coq.version else null;
preConfigure = ''
patchShebangs dev/tools/
'';
prefixKey = "-prefix ";
useDune = true;
buildInputs = [
copyDesktopItems
wrapGAppsHook3
coq.ocamlPackages.lablgtk3-sourceview3
glib
adwaita-icon-theme
];
buildPhase = ''
runHook preBuild
dune build -p ${pname} -j $NIX_BUILD_CORES
runHook postBuild
'';
installPhase = ''
runHook preInstall
dune install --prefix $out ${pname}
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "coqide";
exec = "coqide";
icon = "coq";
desktopName = "CoqIDE";
comment = "Graphical interface for the Coq proof assistant";
categories = [
"Development"
"Science"
"Math"
"IDE"
"GTK"
];
})
];
meta = with lib; {
homepage = "https://coq.inria.fr";
description = "CoqIDE user interface for the Coq proof assistant";
mainProgram = "coqide";
license = licenses.lgpl21Plus;
maintainers = [ maintainers.Zimmi48 ];
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
mkCoqDerivation,
coq,
bignums,
version ? null,
}:
mkCoqDerivation {
pname = "coqprime";
owner = "thery";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.14" "8.20";
out = "8.18";
}
{
case = range "8.12" "8.16";
out = "8.15";
}
{
case = range "8.10" "8.11";
out = "8.10";
}
{
case = range "8.8" "8.9";
out = "8.8";
}
{
case = "8.7";
out = "8.7.2";
}
] null;
release."8.18".sha256 = "sha256-KObBEYerWhIStmq90G3vs9K5LUEOfB2SPxirwLiWQ6E=";
release."8.17".sha256 = "sha256-D878t/PijVCopRKHYqfwdNvt3arGlI8yxbK/vI6qZUY=";
release."8.15".sha256 = "sha256:1zr2q52r08na8265019pj9spcz982ivixk6cnzk6l1srn2g328gv";
release."8.14.1".sha256 = "sha256:0dqf87xkzcpg7gglbxjyx68ad84w1w73icxgy3s7d3w563glc2p7";
release."8.12".sha256 = "1slka4w0pya15js4drx9frj7lxyp3k2lzib8v23givzpnxs8ijdj";
release."8.10".sha256 = "0r9gnh5a5ykiiz5h1i8xnzgiydpwc4z9qhndxyya85xq0f910qaz";
release."8.8".sha256 = "075yjczk79pf1hd3lgdjiz84ilkzfxjh18lgzrhhqp7d3kz5lxp5";
release."8.7.2".sha256 = "15zlcrx06qqxjy3nhh22wzy0rb4npc8l4nx2bbsfsvrisbq1qb7k";
releaseRev = v: "v${v}";
mlPlugin = true; # uses coq-bignums.plugin
propagatedBuildInputs = [ bignums ];
meta = with lib; {
description = "Library to certify primality using Pocklington certificate and Elliptic Curve Certificate";
license = licenses.lgpl21;
maintainers = [ maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "coqtail-math";
owner = "coq-community";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.11" "8.15";
out = "8.14";
}
{
case = range "8.11" "8.13";
out = "20201124";
}
] null;
release."8.14".sha256 = "sha256:1k8f8idjnx0mf4z479vcx55iz42rjxrbplbznv80m2famxakq03c";
release."20201124".rev = "5c22c3d7dcd8cf4c47cf84a281780f5915488e9e";
release."20201124".sha256 = "sha256-wd+Lh7dpAD4zfpyKuztDmSFEZo5ZiFrR8ti2jUCVvoQ=";
mlPlugin = true;
meta = with lib; {
license = licenses.lgpl3Only;
maintainers = [ maintainers.siraben ];
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
mkCoqDerivation,
autoconf,
coq,
stdlib,
mathcomp-boot,
version ? null,
}:
mkCoqDerivation {
pname = "coquelicot";
owner = "coquelicot";
domain = "gitlab.inria.fr";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.12" "9.1") "3.4.3")
(case (range "8.12" "8.20") "3.4.2")
(case (range "8.12" "8.18") "3.4.0")
(case (range "8.12" "8.17") "3.3.0")
(case (range "8.8" "8.16") "3.2.0")
(case (range "8.8" "8.13") "3.1.0")
(case (range "8.5" "8.9") "3.0.2")
] null;
release."3.4.3".sha256 = "sha256-bzzAIENU2OYTtmdBU9Xw8zyBvz9vqTiqjWSm7RnXXRA=";
release."3.4.2".sha256 = "sha256-aBTF8ZKu67Rb3ryCqFyejUXf/65KgG8i5je/ZMFSrj4=";
release."3.4.1".sha256 = "sha256-REhvIBl3EaL8CQqI34Gn7Xjf9NhPI3nrUAO26pSLbm0=";
release."3.4.0".sha256 = "sha256-LIj2SwTvVBxSAO58VYCQix/uxQQe8ey6hqFOSh3PNcg=";
release."3.3.1".sha256 = "sha256-YCvd4aIt2BxLKBYSWzN7aqo0AuY7z8oADmKvybhYBQI=";
release."3.3.0".sha256 = "sha256-bh9qP/EhWrHpTe2GMGG3S2vgBSSK088mFfhAIGejVoU=";
release."3.2.0".sha256 = "07w7dbl8x7xxnbr2q39wrdh054gvi3daqjpdn1jm53crsl1fjxm4";
release."3.1.0".sha256 = "02i0djar13yk01hzaqprcldhhscn9843x9nf6x3jkv4wv1jwnx9f";
release."3.0.2".sha256 = "1rqfbbskgz7b1bcpva8wh3v3456sq2364y804f94sc8y5sij23nl";
releaseRev = v: "coquelicot-${v}";
nativeBuildInputs = [ autoconf ];
propagatedBuildInputs = [
stdlib
mathcomp-boot
];
useMelquiondRemake.logpath = "Coquelicot";
meta = with lib; {
homepage = "http://coquelicot.saclay.inria.fr/";
description = "Coq library for Reals";
license = licenses.lgpl3;
maintainers = [ maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
findutils,
version ? null,
}:
(mkCoqDerivation {
pname = "coqutil";
owner = "mit-plv";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = isGe "9.0";
out = "0.0.7";
}
{
case = range "8.18" "8.20";
out = "0.0.6";
}
{
case = range "8.17" "8.20";
out = "0.0.5";
}
] null;
releaseRev = v: "v${v}";
release."0.0.7".sha256 = "sha256-A5QDQscZ9BUxxcGTI2RDYOKTZoCYexJQuGNl9i+Wt/g=";
release."0.0.6".sha256 = "sha256-c/ddrj0ahuaj9Zu7YBqK7Q0ur+LK7Fgaa//nxQpQcm4=";
release."0.0.5".sha256 = "sha256-vkZIAAr82GNuCGlCVRgSCj/nqIdD8FITBiX1a8fybqw=";
nativeBuildInputs = [ findutils ];
propagatedBuildInputs = [ ];
meta = {
description = "Coq library for tactics, basic definitions, sets, maps";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ stepbrobd ];
};
}).overrideAttrs
(
o:
lib.optionalAttrs (o.version != null && o.version != "dev" && lib.versionAtLeast o.version "0.0.7")
{
propagatedBuildInputs = o.propagatedBuildInputs ++ [ stdlib ];
}
)

View File

@@ -0,0 +1,73 @@
{
lib,
mkCoqDerivation,
coq,
bignums,
math-classes,
coq-elpi,
version ? null,
}:
(mkCoqDerivation {
pname = "corn";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = (range "8.18" "8.20");
out = "8.20.0";
}
{
case = (range "8.17" "8.20");
out = "8.19.0";
}
{
case = (range "8.14" "8.18");
out = "8.18.0";
}
{
case = (range "8.11" "8.17");
out = "8.16.0";
}
{
case = (range "8.7" "8.15");
out = "8.13.0";
}
{
case = "8.6";
out = "8.8.1";
}
] null;
release = {
"8.8.1".sha256 = "0gh32j0f18vv5lmf6nb87nr5450w6ai06rhrnvlx2wwi79gv10wp";
"8.12.0".sha256 = "0b92vhyzn1j6cs84z2182fn82hxxj0bqq7hk6cs4awwb3vc7dkhi";
"8.13.0".sha256 = "1wzr7mdsnf1rq7q0dvmv55vxzysy85b00ahwbs868bl7m8fk8x5b";
"8.16.0".sha256 = "sha256-ZE/EEIndxHfo/9Me5NX4ZfcH0ZAQ4sRfZY7LRZfLXBQ=";
"8.18.0".sha256 = "sha256-ow3mfarZ1PvBGf5WLnI8LdF3E+8A6fN7cOcXHrZJLo0=";
"8.19.0".sha256 = "sha256-h5MlfRuv2hTbxGmpLUEGQO1YqQTwUNEHZzCfvdOU1TA=";
"8.20.0".sha256 = "sha256-tl68REU6xTbSOzhPucQPd9A3YnnaMNbSY8gl4Seyp10=";
};
configureScript = "./configure.sh";
dontAddPrefix = true;
mlPlugin = true; # uses coq-bignums.plugin
propagatedBuildInputs = [
bignums
math-classes
];
meta = with lib; {
homepage = "http://c-corn.github.io/";
license = licenses.gpl2;
description = "Coq library for constructive analysis";
maintainers = [ maintainers.vbgl ];
};
}).overrideAttrs
(o: {
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optional (lib.versions.isGt "8.19.0" o.version || o.version == "dev") coq-elpi;
})

View File

@@ -0,0 +1,57 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
ssreflect,
stdlib,
}:
mkCoqDerivation {
pname = "deriving";
owner = "arthuraa";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version ssreflect.version ]
[
(case (range "8.17" "9.1") (range "2.0.0" "2.4.0") "0.2.2")
(case (range "8.17" "9.0") (range "2.0.0" "2.3.0") "0.2.1")
(case (range "8.17" "8.20") (range "2.0.0" "2.2.0") "0.2.0")
(case (range "8.11" "8.20") (isLe "2.0.0") "0.1.1")
]
null;
releaseRev = v: "v${v}";
release."0.2.2".sha256 = "sha256-qsbyQ4spg5vVLZkechb2LoBazGjMh7pR9sSS0s7tXxs=";
release."0.2.1".sha256 = "sha256-053bNa3rcy0fCs9CQoKPxDLXnKRHzteyClLDURpaZJo=";
release."0.2.0".sha256 = "sha256-xPsuEayHstjF0PGFJZJ+5cm0oMUrpoGLXN23op97vjM=";
release."0.1.1".sha256 = "sha256-Gu8aInLxTXfAFE0/gWRYI046Dx3Gv1j1+gx92v/UnPI=";
release."0.1.0".sha256 = "sha256:11crnjm8hyis1qllkks3d7r07s1rfzwvyvpijya3s6iqfh8c7xwh";
propagatedBuildInputs = [
ssreflect
stdlib
];
mlPlugin = true;
meta = with lib; {
description = "Generic instances of MathComp classes";
license = licenses.mit;
maintainers = [ maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,94 @@
{
lib,
mkCoqDerivation,
autoreconfHook,
coq,
version ? null,
}:
let
hasWarning = lib.versionAtLeast coq.ocamlPackages.ocaml.version "4.08";
in
(mkCoqDerivation {
pname = "dpdgraph";
repo = "coq-dpdgraph";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
lib.switch coq.coq-version [
(case "9.0" "1.0+9.0")
(case "8.20" "1.0+8.20")
(case "8.19" "1.0+8.19")
(case "8.18" "1.0+8.18")
(case "8.17" "1.0+8.17")
(case "8.16" "1.0+8.16")
(case "8.15" "1.0+8.15")
(case "8.14" "1.0+8.14")
(case "8.13" "1.0+8.13")
(case "8.12" "0.6.8")
(case "8.11" "0.6.7")
(case "8.10" "0.6.6")
(case "8.9" "0.6.5")
(case "8.8" "0.6.3")
(case "8.7" "0.6.2")
] null;
release."1.0+9.0".sha256 = "sha256-gXy70fj2bAkE0did4gI0wTyWp9AIvOo4xTTihaFIpZ0=";
release."1.0+8.20".sha256 = "sha256-szfH/OksCH3SCbcFjwEvLwHE5avmHp1vYiJM6KAXFqs=";
release."1.0+8.19".sha256 = "sha256-L1vjEydYiwDFTXES3sgfdaO/D50AbTJKBXUKUCgbpto=";
release."1.0+8.18".sha256 = "sha256-z14MI1VSYzPqmF1PqDXzymXWRMYoTlQAfR/P3Pdf7fI=";
release."1.0+8.17".sha256 = "sha256-gcvL3vseLKEF9xinT0579jXBBaA5E3rJ5KaU8RfKtm4=";
release."1.0+8.16".sha256 = "sha256-xy4xcVHaD1OHBdGUzUy3SeZnHtOf1+UIh6YjUYFINm0=";
release."1.0+8.15".sha256 = "sha256:1pxr0gakcz297y8hhrnssv5j07ccd58pv7rh7qv5g7855pfqrkg7";
release."1.0+8.14".sha256 = "sha256:01pmi7jcc77431jii6x6nd4m8jg4vycachiyi1h6dx9rp3a2508s";
release."1.0+8.13".sha256 = "sha256:0f8lj8b99n8nsq2jf5m0snblfs8yz50hmlqqq9nlw4qklq7j4z5z";
release."0.6.9".sha256 = "11mbydpcgk7y8pqzickbzx0ig7g9k9al71i9yfrcscd2xj8fwj8z";
release."0.6.8".sha256 = "1mj6sknsd53xfb387sp3kdwvl4wn80ck24bfzf3s6mgw1a12vyps";
release."0.6.7".sha256 = "01vpi7scvkl4ls1z2k2x9zd65wflzb667idj759859hlz3ps9z09";
release."0.6.6".sha256 = "1gjrm5zjzw4cisiwdr5b3iqa7s4cssa220xr0k96rwgk61rcjd8w";
release."0.6.5".sha256 = "1f34z24yg05b1096gqv36jr3vffkcjkf9qncii3pzhhvagxd0w2f";
release."0.6.3".rev = "0acbd0a594c7e927574d5f212cc73a486b5305d2";
release."0.6.3".sha256 = "0c95b0bz2kjm6swr5na4gs06lxxywradszxbr5ldh2zx02r3f3rx";
release."0.6.2".rev = "d76ddde37d918569945774733b7997e8b24daf51";
release."0.6.2".sha256 = "04lnf4b25yarysj848cfl8pd3i3pr3818acyp9hgwdgd1rqmhjwm";
release."0.6.1".rev = "c3b87af6bfa338e18b83f014ebd0e56e1f611663";
release."0.6.1".sha256 = "1jaafkwsb5450378nprjsds1illgdaq60gryi8kspw0i25ykz2c9";
release."0.6".sha256 = "0qvar8gfbrcs9fmvkph5asqz4l5fi63caykx3bsn8zf0xllkwv0n";
releaseRev = v: "v${v}";
mlPlugin = true;
buildInputs = with coq.ocamlPackages; [
ocaml
findlib
ocamlgraph
];
buildFlags = lib.optional hasWarning "WARN_ERR=";
preInstall = ''
mkdir -p $out/bin
'';
extraInstallFlags = [ "BINDIR=$(out)/bin" ];
meta = with lib; {
description = "Build dependency graphs between Coq objects";
license = licenses.lgpl21;
maintainers = with maintainers; [ vbgl ];
};
}).overrideAttrs
(
o:
lib.optionalAttrs (o.version != "dev" && lib.versions.isLe "1.0+9.0" o.version) {
nativeBuildInputs = [ autoreconfHook ];
# dpd_compute.ml uses deprecated Pervasives.compare
# Versions prior to 0.6.5 do not have the WARN_ERR build flag
preConfigure = lib.optionalString hasWarning ''
substituteInPlace Makefile.in --replace "-warn-error +a " ""
'';
}
)

View File

@@ -0,0 +1,108 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
(mkCoqDerivation {
pname = "equations";
owner = "mattam82";
repo = "Coq-Equations";
opam-name = "rocq-equations";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
lib.switch coq.coq-version [
(case "9.0" "1.3.1+9.0")
(case "8.20" "1.3.1+8.20")
(case "8.19" "1.3+8.19")
(case "8.18" "1.3+8.18")
(case "8.17" "1.3+8.17")
(case "8.16" "1.3+8.16")
(case "8.15" "1.3+8.15")
(case "8.14" "1.3+8.14")
(case "8.13" "1.3+8.13")
(case "8.12" "1.2.4+coq8.12")
(case "8.11" "1.2.4+coq8.11")
(case "8.10" "1.2.1+coq8.10-2")
(case "8.9" "1.2.1+coq8.9")
(case "8.8" "1.2+coq8.8")
(case "8.7" "1.0+coq8.7")
(case "8.6" "1.0+coq8.6")
] null;
release."1.0+coq8.6".version = "1.0";
release."1.0+coq8.6".rev = "v1.0";
release."1.0+coq8.6".sha256 = "19ylw9v9g35607w4hm86j7mmkghh07hmkc1ls5bqlz3dizh5q4pj";
release."1.0+coq8.7".version = "1.0";
release."1.0+coq8.7".rev = "v1.0-8.7";
release."1.0+coq8.7".sha256 = "1bavg4zl1xn0jqrdq8iw7xqzdvdf39ligj9saz5m9c507zri952h";
release."1.2+coq8.8".version = "1.2";
release."1.2+coq8.8".rev = "v1.2-8.8";
release."1.2+coq8.8".sha256 = "06452fyzalz7zcjjp73qb7d6xvmqb6skljkivf8pfm55fsc8s7kx";
release."1.2.1+coq8.9".version = "1.2.1";
release."1.2.1+coq8.9".rev = "v1.2.1-8.9";
release."1.2.1+coq8.9".sha256 = "0d8ddj6nc6p0k25cd8fs17cq427zhzbc3v9pk2wd2fnvk70nlfij";
release."1.2.1+coq8.10-2".version = "1.2.1";
release."1.2.1+coq8.10-2".rev = "v1.2.1-8.10-2";
release."1.2.1+coq8.10-2".sha256 = "0j3z4l5nrbyi9zbbyqkc6kassjanwld2188mwmrbqspaypm2ys68";
release."1.2.3+coq8.11".version = "1.2.3";
release."1.2.3+coq8.11".rev = "v1.2.3-8.11";
release."1.2.3+coq8.11".sha256 = "1srxz1rws8jsh7402g2x2vcqgjbbsr64dxxj5d2zs48pmhb20csf";
release."1.2.3+coq8.12".version = "1.2.3";
release."1.2.3+coq8.12".rev = "v1.2.3-8.12";
release."1.2.3+coq8.12".sha256 = "1y0jkvzyz5ssv5vby41p1i8zs7nsdc8g3pzyq73ih9jz8h252643";
release."1.2.4+coq8.11".rev = "v1.2.4-8.11";
release."1.2.4+coq8.11".sha256 = "01fihyav8jbjinycgjc16adpa0zy5hcav5mlkf4s9zvqxka21i52";
release."1.2.4+coq8.12".rev = "v1.2.4-8.12";
release."1.2.4+coq8.12".sha256 = "1n0w8is464qcq8mk2mv7amaf0khbjz5mpc9phf0rhpjm0lb22cb3";
release."1.2.4+coq8.13".rev = "v1.2.4-8.13";
release."1.2.4+coq8.13".sha256 = "0i014lshsdflzw6h0qxra9d2f0q82vffxv2f29awbb9ad0p4rq4q";
release."1.3+8.13".rev = "v1.3-8.13";
release."1.3+8.13".sha256 = "1jwjbkkkk4bwf6pz4zzz8fy5bb17aqyf4smkja59rgj9ya6nrdhg";
release."1.3+8.14".rev = "v1.3-8.14";
release."1.3+8.14".sha256 = "19bj9nncd1r9g4273h5qx35gs3i4bw5z9bhjni24b413hyj55hkv";
release."1.3+8.15".rev = "v1.3-8.15";
release."1.3+8.15".sha256 = "1vfcfpsp9zyj0sw0cwibk76nj6n0r6gwh8m1aa3lbvc0b1kbm32k";
release."1.3+8.16".rev = "v1.3-8.16";
release."1.3+8.16".sha256 = "sha256-zyMGeRObtSGWh7n3WCqesBZL5EgLvKwmnTy09rYpxyE=";
release."1.3+8.17".rev = "v1.3-8.17";
release."1.3+8.17".sha256 = "sha256-yNotSIxFkhTg3reZIchGQ7cV9WmTJ7p7hPfKGBiByDw=";
release."1.3+8.18".rev = "v1.3-8.18";
release."1.3+8.18".sha256 = "sha256-8MZO9vWdr8wlAov0lBTYMnde0RuMyhaiM99zp7Zwfao=";
release."1.3+8.19".rev = "v1.3-8.19";
release."1.3+8.19".sha256 = "sha256-roBCWfAHDww2Z2JbV5yMI3+EOfIsv3WvxEcUbBiZBsk=";
release."1.3.1+8.20".rev = "v1.3.1-8.20";
release."1.3.1+8.20".sha256 = "sha256-u8LB1KiACM5zVaoL7dSdHYvZgX7pf30VuqtjLLGuTzc=";
release."1.3.1+9.0".rev = "v1.3.1-9.0";
release."1.3.1+9.0".sha256 = "sha256-186Z0/wCuGAjIvG1LoYBMPooaC6HmnKWowYXuR0y6bA=";
mlPlugin = true;
useDuneifVersion = v: v != null && (v == "dev" || lib.versionAtLeast v "1.3.1+9.0");
propagatedBuildInputs = [ stdlib ];
meta = with lib; {
homepage = "https://mattam82.github.io/Coq-Equations/";
description = "Plugin for Coq to add dependent pattern-matching";
maintainers = with maintainers; [ jwiegley ];
};
}).overrideAttrs
(
o:
if o.version != null && o.version != "dev" && !(lib.versionAtLeast o.version "1.3.1+9.0") then
{
preBuild = "coq_makefile -f _CoqProject -o Makefile${
lib.optionalString (lib.versionAtLeast o.version "1.2.1" || o.version == "dev") ".coq"
}";
}
else
{
propagatedBuildInputs = o.propagatedBuildInputs ++ [ coq.ocamlPackages.ppx_optcomp ];
}
)

View File

@@ -0,0 +1,58 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
mathcomp-boot,
deriving,
}:
(mkCoqDerivation {
pname = "extructures";
owner = "arthuraa";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-boot.version ]
[
(case (range "8.17" "9.1") (range "2.0.0" "2.4.0") "0.5.0")
(case (range "8.17" "8.20") (range "2.0.0" "2.3.0") "0.4.0")
(case (range "8.11" "8.20") (range "1.12.0" "1.19.0") "0.3.1")
(case (range "8.11" "8.14") (isLe "1.12.0") "0.3.0")
(case (range "8.10" "8.12") (isLe "1.12.0") "0.2.2")
]
null;
releaseRev = v: "v${v}";
release."0.5.0".sha256 = "sha256-Guu2+tmHym52DA6SB5Rq/rYWIQEl47Q7YvMaUkfOH2k=";
release."0.4.0".sha256 = "sha256-hItFO2XY2LTPSofPTKt3AfOEfiLliaYdzUXgDv4ea9Y=";
release."0.3.1".sha256 = "sha256-KcuG/11Yq5ACem4FyVnQqHKvy3tNK7hd0ir2SJzzMN0=";
release."0.3.0".sha256 = "sha256:14rm0726f1732ldds495qavg26gsn30w6dfdn36xb12g5kzavp38";
release."0.2.2".sha256 = "sha256:1clzza73gccy6p6l95n6gs0adkqd3h4wgl4qg5l0qm4q140grvm7";
propagatedBuildInputs = [ mathcomp-boot ];
meta = with lib; {
description = "Finite data structures with extensional reasoning";
license = licenses.mit;
maintainers = [ maintainers.vbgl ];
};
}).overrideAttrs
(o: {
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optional (lib.versionAtLeast o.version "0.3.0" || o.version == "dev") deriving;
})

View File

@@ -0,0 +1,45 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-algebra,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "fcsl-pcm";
owner = "imdea-software";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-algebra.version ]
[
(case (range "9.0" "9.1") (range "2.4.0" "2.4.0") "2.2.0")
]
null;
release."2.2.0".sha256 = "sha256-VnfK+RHWiq27hxEJ9stpVp609/dMiPH6UHFhzaHdAnM=";
releaseRev = v: "v${v}";
propagatedBuildInputs = [
mathcomp-algebra
stdlib
];
meta = with lib; {
description = "Coq library of Partial Commutative Monoids";
license = licenses.asl20;
maintainers = [ maintainers.proux01 ];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
bash,
autoconf,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "flocq";
owner = "flocq";
domain = "gitlab.inria.fr";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.15" "9.1") "4.2.1")
(case (range "8.14" "8.20") "4.2.0")
(case (range "8.14" "8.18") "4.1.3")
(case (range "8.14" "8.17") "4.1.1")
(case (range "8.14" "8.16") "4.1.0")
(case (range "8.7" "8.15") "3.4.3")
(case (range "8.5" "8.8") "2.6.1")
] null;
release."4.2.1".sha256 = "sha256-W5hcAm0GGmNsvre79/iGNcoBwFzStC4G177hZ3ds/4E=";
release."4.2.0".sha256 = "sha256-uTeo4GCs6wTLN3sLKsj0xLlt1fUDYfozXtq6iooLUgM=";
release."4.1.4".sha256 = "sha256-Use6Mlx79yef1CkCPyGoOItsD69B9KR+mQArCtmre4s=";
release."4.1.3".sha256 = "sha256-os3cI885xNpxI+1p5rb8fSNnxKr7SFxqh83+3AM3t4I=";
release."4.1.1".sha256 = "sha256-FbClxlV0ZaxITe7s9SlNbpeMNDJli+Dfh2TMrjaMtHo=";
release."4.1.0".sha256 = "sha256:09rak9cha7q11yfqracbcq75mhmir84331h1218xcawza48rbjik";
release."3.4.3".sha256 = "sha256-YTdWlEmFJjCcHkl47jSOgrGqdXoApJY4u618ofCaCZE=";
release."3.4.2".sha256 = "1s37hvxyffx8ccc8mg5aba7ivfc39p216iibvd7f2cb9lniqk1pw";
release."3.3.1".sha256 = "1mk8adhi5hrllsr0hamzk91vf2405sjr4lh5brg9201mcw11abkz";
release."2.6.1".sha256 = "0q5a038ww5dn72yvwn5298d3ridkcngb1dik8hdyr3xh7gr5qibj";
releaseRev = v: "flocq-${v}";
nativeBuildInputs = [
bash
autoconf
];
mlPlugin = true;
useMelquiondRemake.logpath = "Flocq";
propagatedBuildInputs = [ stdlib ];
meta = with lib; {
description = "Floating-point formalization for the Coq system";
license = licenses.lgpl3;
maintainers = with maintainers; [ jwiegley ];
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp,
version ? null,
}:
mkCoqDerivation {
pname = "fourcolor";
owner = "math-comp";
releaseRev = v: "v${v}";
release."1.2.3".sha256 = "sha256-gwKfUa74fIP7j+2eQgnLD7AswjCtOFGHGaIWb4qI0n4=";
release."1.2.4".sha256 = "sha256-iSW2O1kuunvOqTolmGGXmsYTxo2MJYCdW3BnEhp6Ksg=";
release."1.2.5".sha256 = "sha256-3qOPNCRjGK2UdHGMSqElpIXhAPVCklpeQgZwf9AFals=";
release."1.3.0".sha256 = "sha256-h9pa6vaKT6jCEaIdEdcu0498Ou5kEXtZdb9P7WXK1DQ=";
release."1.3.1".sha256 = "sha256-wBizm1hJXPYBu0tHFNScQHd22FebsJYoggT5OlhY/zM=";
release."1.4.0".sha256 = "sha256-8TtNPEbp3uLAH+MjOKiTZHOjPb3vVYlabuqsdWxbg80=";
release."1.4.1".sha256 = "sha256-0UASpo9CdpvidRv33BDWrevo+NSOhxLQFPCJAWPXf+s=";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (isGe "8.16") (isGe "2.0") "1.4.1")
(case (isGe "8.16") "2.0.0" "1.3.0")
(case (isGe "8.11") (range "1.12" "1.19") "1.2.5")
(case (isGe "8.11") (range "1.11" "1.14") "1.2.4")
(case (isLe "8.13") (lib.pred.inter (isGe "1.11.0") (isLt "1.13")) "1.2.3")
]
null;
propagatedBuildInputs = [
mathcomp.boot
mathcomp.fingroup
mathcomp.algebra
];
meta = with lib; {
description = "Formal proof of the Four Color Theorem";
maintainers = with maintainers; [ siraben ];
license = licenses.cecill-b;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
mkCoqDerivation,
coq,
hydra-battles,
gaia,
mathcomp-zify,
mathcomp,
version ? null,
}:
mkCoqDerivation {
pname = "gaia-hydras";
repo = "hydra-battles";
release."0.5".sha256 = "121pcbn6v59l0c165ha9n00whbddpy11npx2y9cn7g879sfk2nqk";
release."0.6".sha256 = "1dri4sisa7mhclf8w4kw7ixs5zxm8xyjr034r1377p96rdk3jj0j";
release."0.9".sha256 = "sha256-wlK+154owQD/03FB669KCjyQlL2YOXLCi0KLSo0DOwc=";
releaseRev = (v: "v${v}");
inherit version;
defaultVersion =
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
{
cases = [
(range "8.13" "8.16")
(range "1.12.0" "1.18.0")
];
out = "0.9";
}
{
cases = [
(range "8.13" "8.14")
(range "1.12.0" "1.18.0")
];
out = "0.5";
}
]
null;
propagatedBuildInputs = [
hydra-battles
gaia
mathcomp-zify
];
useDune = true;
meta = with lib; {
description = "Comparison between ordinals in Gaia and Hydra battles";
longDescription = ''
The Gaia and Hydra battles projects develop different notions of ordinals.
This development bridges the different notions.
'';
maintainers = with maintainers; [ Zimmi48 ];
license = licenses.mit;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "gaia";
release."1.11".sha256 = "sha256:0gwb0blf37sv9gb0qpn34dab71zdcx7jsnqm3j9p58qw65cgsqn5";
release."1.12".sha256 = "sha256:0c6cim4x6f9944g8v0cp0lxs244lrhb04ms4y2s6y1wh321zj5mi";
release."1.13".sha256 = "sha256:0i8ix2rbw10v34bi0yrx0z89ng96ydqbxm8rv2rnfgy4d1b27x6q";
release."1.14".sha256 = "sha256-wgeQC0fIN3PSmRY1K6/KTy+rJmqqxdo3Bhsz1vjVAes=";
release."1.15".sha256 = "sha256:04zchnkvaq2mzpcilpspn5l947689gj3m0w20m0nd7w4drvlahnw";
release."1.17".sha256 = "sha256-2VzdopXgKS/wC5Rd1/Zlr12J5bSIGINFjG1nrMjDrGE=";
release."2.2".sha256 = "sha256-y8LlQg9d9rfPFjzS9Xu3BW/H3tPiOC+Eb/zwXJGW9d4=";
release."2.3".sha256 = "sha256-inWJok0F3SZpVfoyMfpRXHVHn4z2aY8JjCKKhdVTnoc=";
releaseRev = (v: "v${v}");
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.16" "9.1") (range "2.0" "2.4") "2.3")
(case (range "8.16" "9.0") (range "2.0" "2.3") "2.2")
(case (range "8.10" "8.18") (range "1.12.0" "1.18.0") "1.17")
(case (range "8.10" "8.12") "1.11.0" "1.11")
]
null;
propagatedBuildInputs = [
mathcomp.boot
mathcomp.fingroup
mathcomp.algebra
stdlib
];
meta = with lib; {
description = "Implementation of books from Bourbaki's Elements of Mathematics in Coq";
maintainers = with maintainers; [ Zimmi48 ];
license = licenses.mit;
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
mkCoqDerivation,
autoconf,
coq,
flocq,
version ? null,
}:
mkCoqDerivation {
pname = "gappalib";
repo = "coq";
owner = "gappa";
domain = "gitlab.inria.fr";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.16" "8.20";
out = "1.7.0";
}
{
case = range "8.8" "8.15";
out = "1.5.5";
}
] null;
release."1.7.0".sha256 = "sha256-NHKfX2on0tw2T0AqOLIFDCHlkl9OXkLiRExEwauwGqE=";
release."1.6.0".sha256 = "sha256-GQls31TT4y3h18RUxAX+LpHIKon5UvDfW1GuURRKeKA=";
release."1.5.5".sha256 = "sha256-qxi2Kg3N3o6+ncq7aPNEg98dBmQC5WCa86zROPJSDdo=";
release."1.5.4".sha256 = "sha256-9PlkXqCu4rbFD7qnMF1GSpPCVmwJ3r593RfAvkJbbdA=";
release."1.5.3".sha256 = "sha256-SuMopX5sm4jh2uBuE7zr6vhWhHYZYnab+epjqYJqg+s=";
release."1.5.2".sha256 = "sha256-A021Bhqz5r2CZBayfjIiWrCIfUlejcQAfbTmOaf6QTM=";
release."1.5.1".sha256 = "1806bq1z6q5rq2ma7d5kfbqfyfr755hjg0dq7b2llry8fx9cxjsg";
release."1.5.0".sha256 = "1i1c0gakffxqqqqw064cbvc243yl325hxd50jmczr6mk18igk41n";
release."1.4.5".sha256 = "081hib1d9wfm29kis390qsqch8v6fs3q71g2rgbbzx5y5cf48n9k";
release."1.4.4".sha256 = "114q2hgw64j6kqa9mg3qcp1nlf0ia46z2xadq81fnkxqm856ml7l";
releaseRev = v: "gappalib-coq-${v}";
nativeBuildInputs = [ autoconf ];
mlPlugin = true;
propagatedBuildInputs = [ flocq ];
useMelquiondRemake.logpath = "Gappa";
meta = with lib; {
description = "Coq support library for Gappa";
license = licenses.lgpl21;
maintainers = [ maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
mkCoqDerivation,
coq,
hydra-battles,
pocklington,
version ? null,
}:
mkCoqDerivation {
pname = "goedel";
owner = "coq-community";
releaseRev = (v: "v${v}");
release."8.12.0".sha256 = "sha256-4lAwWFHGUzPcfHI9u5b+N+7mQ0sLJ8bH8beqQubfFEQ=";
release."8.13.0".sha256 = "0sqqkmj6wsk4xmhrnqkhcsbsrqjzn2gnk67nqzgrmjpw5danz8y5";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.11" "8.16";
out = "8.13.0";
}
] null;
propagatedBuildInputs = [
hydra-battles
pocklington
];
meta = with lib; {
description = "Gödel-Rosser 1st incompleteness theorem in Coq";
maintainers = with maintainers; [ siraben ];
license = licenses.mit;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,71 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp,
mathcomp-finmap,
mathcomp-algebra-tactics,
fourcolor,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "graph-theory";
release."0.9".sha256 = "sha256-Hl3JS9YERD8QQziXqZ9DqLHKp63RKI9HxoFYWSkJQZI=";
release."0.9.1".sha256 = "sha256-lRRY+501x+DqNeItBnbwYIqWLDksinWIY4x/iojRNYU=";
release."0.9.2".sha256 = "sha256-DPYCZS8CzkfgpR+lmYhV2v20ezMtyWp8hdWpuh0OOQU=";
release."0.9.3".sha256 = "sha256-9WX3gsw+4btJLqcGg2W+7Qy+jaZtkfw7vCp8sXYmaWw=";
release."0.9.4".sha256 = "sha256-fXTAsRdPisNhg8Umaa7S7gZ1M8zuPGg426KP9fAkmXQ=";
release."0.9.6".sha256 = "sha256-fvGb970tRE4xj1pBIhNBDaqssDd6kNQ/+s0c+aOO5IE=";
releaseRev = v: "v${v}";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.18" "9.0") (range "2.0.0" "2.4.0") "0.9.6")
(case (range "8.16" "8.19") (range "2.0.0" "2.3.0") "0.9.4")
(case (range "8.16" "8.18") (range "2.0.0" "2.1.0") "0.9.3")
(case (range "8.14" "8.18") (range "1.13.0" "1.18.0") "0.9.2")
(case (range "8.14" "8.16") (range "1.13.0" "1.14.0") "0.9.1")
(case (range "8.12" "8.13") (range "1.12.0" "1.14.0") "0.9")
]
null;
propagatedBuildInputs = [
mathcomp.algebra
mathcomp-finmap
mathcomp.fingroup
mathcomp-algebra-tactics
fourcolor
stdlib
];
meta = with lib; {
description = "Library of formalized graph theory results in Coq";
longDescription = ''
A library of formalized graph theory results, including various
standard results from the literature (e.g., Mengers Theorem, Halls
Marriage Theorem, and the excluded minor characterization of
treewidth-two graphs) as well as some more recent results arising from
the study of relation algebra within the ERC CoVeCe project (e.g.,
soundness and completeness of an axiomatization of graph isomorphism).
'';
maintainers = with maintainers; [ siraben ];
license = licenses.cecill-b;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
fetchzip,
mkCoqDerivation,
coq,
version ? null,
}:
let
fetcher =
{
rev,
repo,
owner,
sha256,
domain,
...
}:
fetchzip {
url = "https://${domain}/${owner}/${repo}/download/${repo}-${rev}.zip";
inherit sha256;
};
in
mkCoqDerivation {
pname = "heq";
repo = "Heq";
owner = "gil.hur";
domain = "sf.snu.ac.kr";
inherit version fetcher;
defaultVersion = if lib.versions.isLt "8.8" coq.coq-version then "0.92" else null;
release."0.92".sha256 = "0cf8y6728n81wwlbpq3vi7l2dbzi7759klypld4gpsjjp1y1fj74";
mlPlugin = true;
preBuild = "cd src";
extraInstallFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
meta = {
homepage = "https://ropas.snu.ac.kr/~gil.hur/Heq/";
description = "Heq : a Coq library for Heterogeneous Equality";
maintainers = with lib.maintainers; [ jwiegley ];
};
}

View File

@@ -0,0 +1,84 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
coq-elpi,
version ? null,
}:
let
hb = mkCoqDerivation {
pname = "hierarchy-builder";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.20" "8.20") "1.9.1")
(case (range "8.19" "8.20") "1.8.0")
(case (range "8.18" "8.20") "1.7.1")
(case (range "8.16" "8.18") "1.6.0")
(case (range "8.15" "8.18") "1.5.0")
(case (range "8.15" "8.17") "1.4.0")
(case (range "8.13" "8.14") "1.2.0")
(case (range "8.12" "8.13") "1.1.0")
(case (isEq "8.11") "0.10.0")
] null;
release."1.9.1".sha256 = "sha256-AiS0ezMyfIYlXnuNsVLz1GlKQZzJX+ilkrKkbo0GrF0=";
release."1.8.1".sha256 = "sha256-Z0WAHDyycqgL+Le/zNfEAoLWzFb7WIL+3G3vEBExlb4=";
release."1.8.0".sha256 = "sha256-4s/4ZZKj5tiTtSHGIM8Op/Pak4Vp52WVOpd4l9m19fY=";
release."1.7.1".sha256 = "sha256-MCmOzMh/SBTFAoPbbIQ7aqd3hMcSMpAKpiZI7dbRaGs=";
release."1.7.0".sha256 = "sha256-WqSeuJhmqicJgXw/xGjGvbRzfyOK7rmkVRb6tPDTAZg=";
release."1.6.0".sha256 = "sha256-E8s20veOuK96knVQ7rEDSt8VmbtYfPgItD0dTY/mckg=";
release."1.5.0".sha256 = "sha256-Lia3o156Pbe8rDHOA1IniGYsG5/qzZkzDKdHecfmS+c=";
release."1.4.0".sha256 = "sha256-tOed9UU3kMw6KWHJ5LVLUFEmzHx1ImutXQvZ0ldW9rw=";
release."1.3.0".sha256 = "17k7rlxdx43qda6i1yafpgc64na8br285cb0mbxy5wryafcdrkrc";
release."1.2.1".sha256 = "sha256-pQYZJ34YzvdlRSGLwsrYgPdz3p/l5f+KhJjkYT08Mj0=";
release."1.2.0".sha256 = "0sk01rvvk652d86aibc8rik2m8iz7jn6mw9hh6xkbxlsvh50719d";
release."1.1.0".sha256 = "sha256-spno5ty4kU4WWiOfzoqbXF8lWlNSlySWcRReR3zE/4Q=";
release."1.0.0".sha256 = "0yykygs0z6fby6vkiaiv3azy1i9yx4rqg8xdlgkwnf2284hffzpp";
release."0.10.0".sha256 = "1a3vry9nzavrlrdlq3cys3f8kpq3bz447q8c4c7lh2qal61wb32h";
releaseRev = v: "v${v}";
propagatedBuildInputs = [ coq-elpi ];
mlPlugin = true;
meta = with lib; {
description = "High level commands to declare a hierarchy based on packed classes";
maintainers = with maintainers; [
cohencyril
siraben
];
license = licenses.mit;
};
};
hb2 = hb.overrideAttrs (
o:
lib.optionalAttrs (lib.versions.isGe "1.2.0" o.version || o.version == "dev") {
buildPhase = "make build";
}
// (
if lib.versions.isGe "1.1.0" o.version || o.version == "dev" then
{ installFlags = [ "DESTDIR=$(out)" ] ++ o.installFlags; }
else
{ installFlags = [ "VFILES=structures.v" ] ++ o.installFlags; }
)
// lib.optionalAttrs (o.version != null && o.version == "1.8.1") {
propagatedBuildInputs = o.propagatedBuildInputs ++ [ stdlib ];
}
);
in
# this is just a wrapper for rocqPackages.hierarchy-builder for Rocq >= 9.0
if coq.rocqPackages ? hierarchy-builder then
coq.rocqPackages.hierarchy-builder.override {
inherit version;
inherit (coq.rocqPackages) rocq-core;
rocq-elpi = coq-elpi;
}
else
hb2

View File

@@ -0,0 +1,46 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "high-school-geometry";
inherit version;
repo = "HighSchoolGeometry";
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.16" "8.20";
out = "8.16";
}
{
case = range "8.12" "8.16";
out = "8.13";
}
{
case = "8.12";
out = "8.12";
}
{
case = "8.11";
out = "8.11";
}
] null;
release = {
"8.16".sha256 = "sha256-HvUrZ6l7wCshuKUZs8rvfMkTEv+oXuogI5LICcD8Bn8=";
"8.13".sha256 = "sha256-5F/6155v0bWi5t7n4qU/GuR6jENngvWIIqJGPURzIeQ=";
"8.12".sha256 = "sha256-OF7sahU+5Ormkcrd8t6p2Kp/B2/Q/6zYTV3/XBvlGHc=";
"8.11".sha256 = "sha256-sVGeBBAJ7a7f+EJU1aSUvIVe9ip9PakY4379XWvvoqw=";
};
releaseRev = v: "v${v}";
meta = with lib; {
description = "Geometry in Coq for French high school";
maintainers = with maintainers; [ definfo ];
license = licenses.lgpl21Plus;
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
mkCoqDerivation,
coq,
QuickChick,
async-test,
version ? null,
}:
mkCoqDerivation {
pname = "http";
owner = "liyishuai";
repo = "coq-http";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
(case (range "8.14" "8.19") "0.2.1")
] null;
release = {
"0.2.1".sha256 = "sha256-CIcaXEojNdajXNoMBjGlQRc1sOJSKgUlditNxbNSPgk=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [
QuickChick
async-test
];
configurePhase = ''
sed -e 's/^ install extract.*//' -i Makefile
'';
meta = {
description = "HTTP specification in Coq, testable and verifiable";
license = lib.licenses.mpl20;
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
mkCoqDerivation,
coq,
equations,
LibHyps,
version ? null,
}:
(mkCoqDerivation {
pname = "hydra-battles";
owner = "coq-community";
release."0.4".sha256 = "1f7pc4w3kir4c9p0fjx5l77401bx12y72nmqxrqs3qqd3iynvqlp";
release."0.5".sha256 = "121pcbn6v59l0c165ha9n00whbddpy11npx2y9cn7g879sfk2nqk";
release."0.6".sha256 = "1dri4sisa7mhclf8w4kw7ixs5zxm8xyjr034r1377p96rdk3jj0j";
release."0.9".sha256 = "sha256-wlK+154owQD/03FB669KCjyQlL2YOXLCi0KLSo0DOwc=";
releaseRev = (v: "v${v}");
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.13" "8.16") "0.9")
(case (range "8.11" "8.12") "0.4")
] null;
useDune = true;
meta = with lib; {
description = "Exploration of some properties of Kirby and Paris' hydra battles, with the help of Coq";
longDescription = ''
An exploration of some properties of Kirby and Paris' hydra
battles, with the help of the Coq Proof assistant. This
development includes the study of several representations of
ordinal numbers, and a part of the so-called Ketonen and Solovay
machinery (combinatorial properties of epsilon0).
'';
maintainers = with maintainers; [
siraben
Zimmi48
];
license = licenses.mit;
platforms = platforms.unix;
};
}).overrideAttrs
(
o:
let
inherit (o) version;
in
{
propagatedBuildInputs = [
equations
]
++ lib.optional (lib.versions.isGe "0.6" version || version == "dev") LibHyps;
}
)

View File

@@ -0,0 +1,78 @@
{
lib,
mkCoqDerivation,
autoconf,
coq,
coquelicot,
flocq,
mathcomp-boot,
mathcomp-fingroup,
bignums ? null,
gnuplot_qt,
version ? null,
}:
mkCoqDerivation rec {
pname = "interval";
owner = "coqinterval";
domain = "gitlab.inria.fr";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.13" "9.1") "4.11.3")
(case (range "8.13" "9.0") "4.11.2")
(case (range "8.13" "8.20") "4.11.1")
(case (range "8.12" "8.19") "4.10.0")
(case (range "8.12" "8.18") "4.9.0")
(case (range "8.12" "8.17") "4.8.0")
(case (range "8.12" "8.16") "4.6.0")
(case (range "8.8" "8.16") "4.5.2")
(case (range "8.8" "8.12") "4.0.0")
(case (range "8.7" "8.11") "3.4.2")
(case (range "8.5" "8.6") "3.3.0")
] null;
release."4.11.3".sha256 = "sha256-Cwovc3ln7ZEEDgMEh+pSUYqD/rtwFk4ED2hTRdy9YRg";
release."4.11.2".sha256 = "sha256-ouhjHtlxcqt06+Pt+UZAzwp83bVYPh3N+8jnsVvapSU=";
release."4.11.1".sha256 = "sha256-QWZvU468rOhK796xCCEawW6rhCRTPnE0iLll9ynKflo=";
release."4.11.0".sha256 = "sha256-vPwa4zSjyvxHLGDoNaBnHV2pb77dnQFbC50BL80fcvE=";
release."4.10.0".sha256 = "sha256-MZJVoKGLXjDabdv9BuUSK1L9z1cubzC9cqVuWevKIXQ=";
release."4.9.0".sha256 = "sha256-+5NppyQahcc1idGu/U3B+EIWuZz2L3/oY7dIJR6pitE=";
release."4.8.1".sha256 = "sha256-gknZ3bA90YY2AvwfFsP5iMhohwkQ8G96mH+4st2RPDc=";
release."4.8.0".sha256 = "sha256-YPQ1tuUgGixAVdQUJ9a3lZUNVgm2pKK3RKvl3m+/8rY=";
release."4.7.0".sha256 = "sha256-Cel25w4BeaNqu9KAW3N2KYO2IGY0EOAK5FQ6VHBPmFQ=";
release."4.6.1".sha256 = "sha256-ZZSxt8ksz0g6dl/LEido5qJXgsaxHrVLqkGUHu90+e0=";
release."4.6.0".sha256 = "sha256-n9ECKnV0L6XYcIcbYyOJKwlbisz/RRbNW5YESHo07X0=";
release."4.5.2".sha256 = "sha256-r0yE9pkC4EYlqsimxkdlCXevRcwKa3HGFZiUH+ueUY8=";
release."4.5.1".sha256 = "sha256-5OxbSPdw/1FFENubulKSk6fEIEYSPCxfvMMgtgN6j6s=";
release."4.3.0".sha256 = "sha256-k8DLC4HYYpHeEEgXUafS8jkaECqlM+/CoYaInmUTYko=";
release."4.2.0".sha256 = "sha256-SD5thgpirs3wmZBICjXGpoefg9AAXyExb5t8tz3iZhE=";
release."4.1.1".sha256 = "sha256-h2NJ6sZt1C/88v7W2xyuftEDoyRt3H6kqm5g2hc1aoU=";
release."4.0.0".sha256 = "1hhih6zmid610l6c8z3x4yzdzw9jniyjiknd1vpkyb2rxvqm3gzp";
release."3.4.2".sha256 = "07ngix32qarl3pjnm9d0vqc9fdrgm08gy7zp306hwxjyq7h1v7z0";
release."3.3.0".sha256 = "0lz2hgggzn4cvklvm8rpaxvwaryf37i8mzqajqgdxdbd8f12acsz";
releaseRev = v: "interval-${v}";
nativeBuildInputs = [ autoconf ];
propagatedBuildInputs =
lib.optional (lib.versions.isGe "8.6" coq.coq-version) bignums
++ [
coquelicot
flocq
mathcomp-boot
mathcomp-fingroup
]
++ lib.optionals (lib.versions.isGe "4.2.0" defaultVersion) [ gnuplot_qt ];
useMelquiondRemake.logpath = "Interval";
mlPlugin = true;
enableParallelBuilding = true;
meta = with lib; {
description = "Tactics for simplifying the proofs of inequalities on expressions of real numbers for the Coq proof assistant";
license = licenses.cecill-c;
maintainers = with maintainers; [ vbgl ];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
iris,
}:
mkCoqDerivation {
pname = "iris-named-props";
owner = "tchajed";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.16" "8.19";
out = "2023-08-14";
}
] null;
release."2023-08-14".sha256 = "sha256-gu9qOdHO0qJ2B9Y9Vf66q08iNJcfuECJO66fizFB08g=";
release."2023-08-14".rev = "ca1871dd33649f27257a0fbf94076acc80ecffbc";
propagatedBuildInputs = [ iris ];
meta = {
description = "Named props for Iris";
maintainers = with lib.maintainers; [ ineol ];
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
mkCoqDerivation,
coq,
stdpp,
version ? null,
}:
mkCoqDerivation {
pname = "iris";
domain = "gitlab.mpi-sws.org";
owner = "iris";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.19" "9.1") "4.4.0")
(case (range "8.18" "8.19") "4.2.0")
(case (range "8.16" "8.18") "4.1.0")
(case (range "8.13" "8.17") "4.0.0")
(case (range "8.12" "8.14") "3.5.0")
(case (range "8.11" "8.13") "3.4.0")
(case (range "8.9" "8.10") "3.3.0")
] null;
release."4.4.0".sha256 = "sha256-zpuaIdH2ScOuZB0Vt1TEHAbsmcT1DyoDsJpftT1M7qw=";
release."4.3.0".sha256 = "sha256-3qhjiFI+A3I3fD8rFfJL5Hek77wScfn/FNNbDyGqA1k=";
release."4.2.0".sha256 = "sha256-HuiHIe+5letgr1NN1biZZFq0qlWUbFmoVI7Q91+UIfM=";
release."4.1.0".sha256 = "sha256-nTZUeZOXiH7HsfGbMKDE7vGrNVCkbMaWxdMWUcTUNlo=";
release."4.0.0".sha256 = "sha256-Jc9TmgGvkiDaz9IOoExyeryU1E+Q37GN24NIM397/Gg=";
release."3.6.0".sha256 = "sha256:02vbq597fjxd5znzxdb54wfp36412wz2d4yash4q8yddgl1kakmj";
release."3.5.0".sha256 = "0hh14m0anfcv65rxm982ps2vp95vk9fwrpv4br8bxd9vz0091d70";
release."3.4.0".sha256 = "0vdc2mdqn5jjd6yz028c0c6blzrvpl0c7apx6xas7ll60136slrb";
release."3.3.0".sha256 = "0az4gkp5m8sq0p73dlh0r7ckkzhk7zkg5bndw01bdsy5ywj0vilp";
releaseRev = v: "iris-${v}";
propagatedBuildInputs = [ stdpp ];
preBuild = ''
if [[ -f coq-lint.sh ]]
then patchShebangs coq-lint.sh
fi
'';
meta = with lib; {
description = "Coq development of the Iris Project";
license = licenses.bsd3;
maintainers = [
maintainers.vbgl
maintainers.ineol
];
};
}

View File

@@ -0,0 +1,66 @@
{
lib,
callPackage,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
(mkCoqDerivation {
pname = "itauto";
owner = "fbesson";
domain = "gitlab.inria.fr";
release."8.20.0".sha256 = "sha256-LYKGbI3O6yw6CiTJNUGL11PT4q4o+gJK1kQgKQL0/Hk=";
release."8.19.0".sha256 = "sha256-xKWCF4dYvvlJUVGCZcR2RLCG55vlGzu2GN30MeRvVD4=";
release."8.18.0".sha256 = "sha256-4mDDnKTeYrf27uRMkydQxO7j2tfgTFXOREW474d40eo=";
release."8.17.0".sha256 = "sha256-fgdnKchNT1Hyrq14gU8KWYnlSfg3qlsSw5A4+RoA26w=";
release."8.16.0".sha256 = "sha256-4zAUYGlw/pBcLPv2GroIduIlvbfi1+Vy+TdY8KLCqO4=";
release."8.15.0".sha256 = "sha256:10qpv4nx1p0wm9sas47yzsg9z22dhvizszfa21yff08a8fr0igya";
release."8.14.0".sha256 = "sha256:1k6pqhv4dwpkwg81f2rlfg40wh070ks1gy9r0ravm2zhsbxqcfc9";
release."8.13+no".sha256 = "sha256-gXoxtLcHPoyjJkt7WqvzfCMCQlh6kL2KtCGe3N6RC/A=";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (isEq "8.20") "8.20.0")
(case (isEq "8.19") "8.19.0")
(case (isEq "8.18") "8.18.0")
(case (isEq "8.17") "8.17.0")
(case (isEq "8.16") "8.16.0")
(case (isEq "8.15") "8.15.0")
(case (isEq "8.14") "8.14.0")
(case (isEq "8.13") "8.13+no")
] null;
mlPlugin = true;
nativeBuildInputs = (with coq.ocamlPackages; [ ocamlbuild ]);
enableParallelBuilding = false;
passthru.tests.suite = callPackage ./test.nix { };
propagatedBuildInputs = [ stdlib ];
meta = with lib; {
description = "Reflexive SAT solver parameterised by a leaf tactic and Nelson-Oppen support";
maintainers = with maintainers; [ siraben ];
license = licenses.gpl3Plus;
};
}).overrideAttrs
(
o:
lib.optionalAttrs (o.version == "dev" || lib.versionAtLeast o.version "8.16") {
propagatedBuildInputs = o.propagatedBuildInputs ++ [ coq.ocamlPackages.findlib ];
}
// lib.optionalAttrs (o.version == "dev" || lib.versionAtLeast o.version "8.18") {
nativeBuildInputs = with coq.ocamlPackages; [
ocaml
findlib
dune_3
];
}
)

View File

@@ -0,0 +1,38 @@
{
stdenv,
lib,
coq,
itauto,
}:
let
excluded = lib.optionals (lib.versions.isEq "8.16" itauto.version) [
"arith.v"
"refl_bool.v"
];
in
stdenv.mkDerivation {
pname = "coq${coq.coq-version}-itauto-test";
inherit (itauto) src version;
nativeCheckInputs = [
coq
itauto
];
dontConfigure = true;
dontBuild = true;
doCheck = true;
checkPhase = ''
cd test-suite
for m in *.v
do
echo -n ${lib.concatStringsSep " " excluded} | grep --silent $m && continue
echo $m && coqc $m
done
'';
installPhase = "touch $out";
}

View File

@@ -0,0 +1,38 @@
{
lib,
mkCoqDerivation,
coq,
ITree,
simple-io,
version ? null,
}:
mkCoqDerivation {
pname = "itree-io";
repo = "coq-itree-io";
owner = "Lysxia";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
(case (range "8.12" "8.19") "0.1.1")
] null;
release = {
"0.1.1".sha256 = "sha256-IFwIj8dxW4jm2gvuUJ8LKZFSJeljp0bsn8fezxY6t2o=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [
ITree
simple-io
];
meta = {
description = "Interpret itree in the IO monad of simple-io";
license = lib.licenses.mit;
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp,
mathcomp-algebra-tactics,
mathcomp-word,
ITree,
version ? null,
}:
(mkCoqDerivation {
pname = "jasmin";
owner = "jasmin-lang";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.20" "9.1") (range "2.2" "2.4") "2025.06.1")
(case (range "8.19" "9.1") (range "2.2" "2.4") "2025.02.1")
(case (isEq "8.18") (isEq "2.2") "2024.07.2")
]
null;
releaseRev = v: "v${v}";
release."2025.06.1".sha256 = "sha256-wEL1tN0HUa1Eb7FiQOBA6sAkuonrAMdkqq8gu9/CED0=";
release."2025.06.0".sha256 = "sha256-XfTg7ofamzMWqmRIU1/MO+S/ieNjvNEhlgIqFrchdAQ=";
release."2025.02.1".sha256 = "sha256-8P2GdplB12Q0e0XdL77w3nQL1/6Xl/gQNhGTB0WX/8I=";
release."2025.02.0".sha256 = "sha256-Jlf0+VPuYWXdWyKHKHSp7h/HuCCp4VkcrgDAmh7pi5s=";
release."2024.07.3".sha256 = "sha256-n/X8d7ILuZ07l24Ij8TxbQzAG7E8kldWFcUI65W4r+c=";
release."2024.07.2".sha256 = "sha256-aF8SYY5jRxQ6iEr7t6mRN3BEmIDhJ53PGhuZiJGB+i8=";
propagatedBuildInputs = [
mathcomp-algebra-tactics
mathcomp-word
];
makeFlags = [
"-C"
"proofs"
];
meta = with lib; {
description = "Jasmin language & verified compiler";
homepage = "https://github.com/jasmin-lang/jasmin/";
license = licenses.mit;
maintainers = with maintainers; [
proux01
vbgl
];
};
}).overrideAttrs
(o: {
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optional (o.version == "dev" || lib.versionAtLeast o.version "2025.06") ITree;
})

View File

@@ -0,0 +1,52 @@
{
lib,
mkCoqDerivation,
coq,
parsec,
MenhirLib,
version ? null,
}:
(mkCoqDerivation {
pname = "json";
owner = "liyishuai";
repo = "coq-json";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
(case (range "8.14" "9.1") "0.2.0")
(case (range "8.14" "8.20") "0.1.3")
] null;
release = {
"0.2.0".sha256 = "sha256-qDRTgWLUvu4x3/d3BDcqo2I4W5ZmLyRiwuY/Tm/FuKA=";
"0.1.3".sha256 = "sha256-lElAzW4IuX+BB6ngDjlyKn0MytLRfbhQanB+Lct/WR0=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [
parsec
MenhirLib
coq.ocamlPackages.menhir
];
useDuneifVersion = v: lib.versions.isGe "0.2.0" v || v == "dev";
meta = {
description = "From JSON to Coq, and vice versa";
license = lib.licenses.bsd3;
};
}).overrideAttrs
(
o:
lib.optionalAttrs (o.version != null && lib.versions.isLt "0.2.0" o.version) {
buildFlags = [
"MENHIRFLAGS=--coq"
"MENHIRFLAGS+=--coq-no-version-check"
];
}
)

View File

@@ -0,0 +1,72 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-ssreflect,
version ? null,
}:
mkCoqDerivation {
pname = "lemma-overloading";
inherit version;
defaultVersion =
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-ssreflect.version ]
[
{
cases = [
(range "8.10" "8.12")
(range "1.7" "1.11")
];
out = "8.12.0";
}
{
cases = [
(range "8.10" "8.11")
(range "1.7" "1.11")
];
out = "8.11.0";
}
{
cases = [
(range "8.8" "8.11")
(range "1.7" "1.10")
];
out = "8.10.0";
}
{
cases = [
(range "8.8" "8.9")
(range "1.7" "1.8")
];
out = "8.9.0";
}
{
cases = [
(isEq "8.8")
(range "1.6.2" "1.7")
];
out = "8.8.0";
}
]
null;
release = {
"8.12.0".sha256 = "sha256-ul1IhxFwhLTy3+rmo3gvjHI3Z8A8avN0Rzq0YDy2bjs=";
"8.11.0".sha256 = "sha256-RI3KdSEYxUbjfZWKO7atGdEqDU8WmLJSFeF6TLlgUFc=";
"8.10.0".sha256 = "sha256-qpHh/iz2fFtGwUedjJ6fuOh8uq1mlL4ETxc9zDJ6800=";
"8.9.0".sha256 = "sha256-dE9O94DvcF93TUTU7ky9pvGZgTtPZWz6826b6Js/nHc=";
"8.8.0".sha256 = "sha256-Iq3KfESMnZF8hhGKuvZHx+hAMEaoCP7MhhQEI6xfoO8=";
};
releaseRev = v: "v${v}";
propagatedBuildInputs = [ mathcomp-ssreflect ];
meta = with lib; {
description = "Libraries demonstrating design patterns for programming and proving with canonical structures in Coq";
maintainers = with lib.maintainers; [ cohencyril ];
license = licenses.gpl3Plus;
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "ltac2";
owner = "coq";
inherit version;
defaultVersion =
lib.switch coq.coq-version [
{
case = "8.10";
out = "0.3";
}
{
case = "8.9";
out = "0.2";
}
{
case = "8.8";
out = "0.1";
}
{
case = "8.7";
out = "0.1-8.7";
}
] null;
release."0.3".sha256 = "0pzs5nsakh4l8ffwgn4ryxbnxdv2x0r1i7bc598ij621haxdirrr";
release."0.2".sha256 = "0xby1kb26r9gcvk5511wqj05fqm9paynwfxlfqkmwkgnfmzk0x73";
release."0.1".sha256 = "1zz26cyv99whj7rrpgnhhm9dfqnpmrx5pqizn8ihf8jkq8d4drz7";
release."0.1-8.7".version = "0.1";
release."0.1-8.7".rev = "v0.1-8.7";
release."0.1-8.7".sha256 = "0l6wiwi4cvd0i324fb29i9mdh0ijlxzggw4mrjjy695l2qdnlgg0";
mlPlugin = true;
meta = with lib; {
description = "Robust and expressive tactic language for Coq";
maintainers = [ maintainers.vbgl ];
license = licenses.lgpl21;
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
mkCoqDerivation,
coq,
bignums,
version ? null,
}:
mkCoqDerivation {
pname = "math-classes";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.17" "8.20";
out = "8.19.0";
}
{
case = range "8.12" "8.18";
out = "8.18.0";
}
{
case = range "8.12" "8.17";
out = "8.17.0";
}
{
case = range "8.6" "8.16";
out = "8.15.0";
}
] null;
release."8.12.0".sha256 = "14nd6a08zncrl5yg2gzk0xf4iinwq4hxnsgm4fyv07ydbkxfb425";
release."8.13.0".sha256 = "1ln7ziivfbxzbdvlhbvyg3v30jgblncmwcsam6gg3d1zz6r7cbby";
release."8.15.0".sha256 = "10w1hm537k6jx8a8vghq1yx12rsa0sjk2ipv3scgir71ln30hllw";
release."8.17.0".sha256 = "sha256-WklL8pgYTd0l4TGt7h7tWj1qcFcXvoPn25+XKF1pIKA=";
release."8.18.0".sha256 = "sha256-0WwPss8+Vr37zX616xeuS4TvtImtSbToFQkQostIjO8=";
release."8.19.0".sha256 = "sha256-rsV96W9MPFi/DKsepNPm1QnC2DMemio+uALIgzVYw0w=";
mlPlugin = true; # uses coq-bignums.plugin
propagatedBuildInputs = [ bignums ];
meta = {
homepage = "https://math-classes.github.io";
description = "Library of abstract interfaces for mathematical structures in Coq";
maintainers = with lib.maintainers; [
siddharthist
jwiegley
];
};
}

View File

@@ -0,0 +1,55 @@
{
coq,
mkCoqDerivation,
mathcomp,
mathcomp-real-closed,
lib,
version ? null,
}:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "abel";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.10" "8.16") (range "1.12.0" "1.15.0") "1.2.1")
(case (range "8.10" "8.15") (range "1.12.0" "1.14.0") "1.2.0")
(case (range "8.10" "8.14") (range "1.11.0" "1.12.0") "1.1.2")
]
null;
release."1.2.1".sha256 = "sha256-M1q6WIPBsayHde2hwlTxylH169hcTs3OuFsEkM0e3yc=";
release."1.2.0".sha256 = "1picd4m85ipj22j3b84cv8ab3330radzrhd6kp0gpxq14dhv02c2";
release."1.1.2".sha256 = "0565w713z1cwxvvdlqws2z5lgdys8lddf0vpwfdj7bpd7pq9hwxg";
release."1.0.0".sha256 = "190jd8hb8anqsvr9ysr514pm5sh8qhw4030ddykvwxx9d9q6rbp3";
propagatedBuildInputs = [
mathcomp.field
mathcomp-real-closed
];
meta = with lib; {
description = "Abel - Galois and Abel - Ruffini Theorems";
license = licenses.cecill-b;
maintainers = [ maintainers.cohencyril ];
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-ssreflect,
mathcomp-algebra,
coq-elpi,
mathcomp-zify,
version ? null,
}:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "algebra-tactics";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-algebra.version ]
[
(case (range "8.20" "9.1") (isGe "2.4") "1.2.7")
(case (range "8.20" "9.1") (isGe "2.4") "1.2.6")
(case (range "8.20" "9.1") (isGe "2.4") "1.2.5")
(case (range "8.16" "9.0") (isGe "2.0") "1.2.4")
(case (range "8.16" "8.18") (isGe "2.0") "1.2.2")
(case (range "8.16" "8.19") (isGe "1.15") "1.1.1")
(case (range "8.13" "8.16") (isGe "1.12") "1.0.0")
]
null;
release."1.0.0".sha256 = "sha256-kszARPBizWbxSQ/Iqpf2vLbxYc6AjpUCLnSNlPcNfls=";
release."1.1.1".sha256 = "sha256-5wItMeeTRoJlRBH3zBNc2VUZn6pkDde60YAvXTx+J3U=";
release."1.2.2".sha256 = "sha256-EU9RJGV3BvnmsX+mGH+6+MDXiGHgDI7aP5sIYiMUXTs=";
release."1.2.3".sha256 = "sha256-6uc1VEfDv+fExEfBR2c0/Q/KjrkX0TbEMCLgeYcpkls=";
release."1.2.4".sha256 = "sha256-BRxt0LGPz2u3kJRjcderaZqCfs8M8qKAAwNSWmIck7Q=";
release."1.2.5".sha256 = "sha256-wTfe+g7ljWs1S+g02VQutnJGLVIOzNX1lm1HTMXeUUA=";
release."1.2.6".sha256 = "sha256-D7EEiLeCJMgxsYvlAFyL7QZyx/KJAKesVE+vyfzqzkU=";
release."1.2.7".sha256 = "sha256-pCal3BPZ85SMAsEFAXRWWV7nuriHGWtyfNocJqsEmLk=";
propagatedBuildInputs = [
mathcomp-ssreflect
mathcomp-algebra
coq-elpi
mathcomp-zify
];
meta = {
description = "Ring and field tactics for Mathematical Components";
maintainers = with lib.maintainers; [ cohencyril ];
};
}

View File

@@ -0,0 +1,231 @@
{
lib,
mkCoqDerivation,
mathcomp,
mathcomp-finmap,
mathcomp-bigenough,
hierarchy-builder,
stdlib,
single ? false,
coqPackages,
coq,
version ? null,
}@args:
let
repo = "analysis";
owner = "math-comp";
release."1.12.0".sha256 = "sha256-PF10NlZ+aqP3PX7+UsZwgJT9PEaDwzvrS/ZGzjP64Wo=";
release."1.11.0".sha256 = "sha256-1apbzBvaLNw/8ARLUhGGy89CyXW+/6O4ckdxKPraiVc=";
release."1.9.0".sha256 = "sha256-zj7WSDUg8ISWxcipGpjEwvvnLp1g8nm23BZiib/15+g=";
release."1.8.0".sha256 = "sha256-2ZafDmZAwGB7sxdUwNIE3xvwBRw1kFDk0m5Vz+onWZc=";
release."1.7.0".sha256 = "sha256-GgsMIHqLkWsPm2VyOPeZdOulkN00IoBz++qA6yE9raQ=";
release."1.5.0".sha256 = "sha256-EWogrkr5TC5F9HjQJwO3bl4P8mij8U7thUGJNNI+k88=";
release."1.4.0".sha256 = "sha256-eDggeuEU0fMK7D5FbxvLkbAgpLw5lwL/Rl0eLXAnJeg=";
release."1.2.0".sha256 = "sha256-w6BivDM4dF4Iv4rUTy++2feweNtMAJxgGExPfYGhXxo=";
release."1.1.0".sha256 = "sha256-wl4kZf4mh9zbFfGcqaFEgWRyp0Bj511F505mYodpS6o=";
release."1.0.0".sha256 = "sha256-KiXyaWB4zQ3NuXadq4BSWfoN1cIo1xiLVSN6nW03tC4=";
release."0.7.0".sha256 = "sha256-JwkyetXrFsFHqz8KY3QBpHsrkhmEFnrCGuKztcoen60=";
release."0.6.7".sha256 = "sha256-3i2PBMEwihwgwUmnS0cmrZ8s+aLPFVq/vo0aXMUaUyA=";
release."0.6.6".sha256 = "sha256-tWtv6yeB5/vzwpKZINK9OQ0yQsvD8qu9zVSNHvLMX5Y=";
release."0.6.5".sha256 = "sha256-oJk9/Jl1SWra2aFAXRAVfX7ZUaDfajqdDksYaW8dv8E=";
release."0.6.1".sha256 = "sha256-1VyNXu11/pDMuH4DmFYSUF/qZ4Bo+/Zl3Y0JkyrH/r0=";
release."0.6.0".sha256 = "sha256-0msICcIrK6jbOSiBu0gIVU3RHwoEEvB88CMQqW/06rg=";
release."0.5.3".sha256 = "sha256-1NjFsi5TITF8ZWx1NyppRmi8g6YaoUtTdS9bU/sUe5k=";
release."0.5.2".sha256 = "0yx5p9zyl8jv1vg7rgkyq8dqzkdnkqv969mi62whmhkvxbavgzbw";
release."0.5.1".sha256 = "1hnzqb1gxf88wgj2n1b0f2xm6sxg9j0735zdsv6j12hlvx5lwk68";
release."0.3.13".sha256 = "sha256-Yaztew79KWRC933kGFOAUIIoqukaZOdNOdw4XszR1Hg=";
release."0.3.10".sha256 = "sha256-FBH2c8QRibq5Ycw/ieB8mZl0fDiPrYdIzZ6W/A3pIhI=";
release."0.3.9".sha256 = "sha256-uUU9diBwUqBrNRLiDc0kz0CGkwTZCUmigPwLbpDOeg4=";
release."0.3.6".sha256 = "0g2j7b2hca4byz62ssgg90bkbc8wwp7xkb2d3225bbvihi92b4c5";
release."0.3.4".sha256 = "18mgycjgg829dbr7ps77z6lcj03h3dchjbj5iir0pybxby7gd45c";
release."0.3.3".sha256 = "1m2mxcngj368vbdb8mlr91hsygl430spl7lgyn9qmn3jykack867";
release."0.3.1".sha256 = "1iad288yvrjv8ahl9v18vfblgqb1l5z6ax644w49w9hwxs93f2k8";
release."0.2.3".sha256 = "0p9mr8g1qma6h10qf7014dv98ln90dfkwn76ynagpww7qap8s966";
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.20" "9.1") (range "2.1.0" "2.4.0") "1.12.0")
(case (range "8.19" "8.20") (range "2.1.0" "2.3.0") "1.9.0")
(case (range "8.17" "8.20") (range "2.0.0" "2.2.0") "1.1.0")
(case (range "8.17" "8.19") (range "1.17.0" "1.19.0") "0.7.0")
(case (range "8.17" "8.18") (range "1.15.0" "1.18.0") "0.6.7")
(case (range "8.17" "8.18") (range "1.15.0" "1.18.0") "0.6.6")
(case (range "8.14" "8.18") (range "1.15.0" "1.17.0") "0.6.5")
(case (range "8.14" "8.18") (range "1.13.0" "1.16.0") "0.6.1")
(case (range "8.14" "8.18") (range "1.13" "1.15") "0.5.2")
(case (range "8.13" "8.15") (range "1.13" "1.14") "0.5.1")
(case (range "8.13" "8.15") (range "1.12" "1.14") "0.3.13")
(case (range "8.11" "8.14") (range "1.12" "1.13") "0.3.10")
(case (range "8.10" "8.12") "1.11.0" "0.3.3")
(case (range "8.10" "8.11") "1.11.0" "0.3.1")
(case (range "8.8" "8.11") (range "1.8" "1.10") "0.2.3")
]
null;
# list of analysis packages sorted by dependency order
packages = {
"classical" = [ ];
"reals" = [ "classical" ];
"experimental-reals" = [ "reals" ];
"analysis" = [ "reals" ];
"reals-stdlib" = [ "reals" ];
"analysis-stdlib" = [
"analysis"
"reals-stdlib"
];
};
mathcomp_ =
package:
let
classical-deps = [
mathcomp.ssreflect
mathcomp.algebra
mathcomp-finmap
];
experimental-reals-deps = [ mathcomp-bigenough ];
analysis-deps = [
mathcomp.field
mathcomp-bigenough
];
intra-deps = lib.optionals (package != "single") (map mathcomp_ packages.${package});
pkgpath = lib.switch package [
{
case = "single";
out = ".";
}
{
case = "analysis";
out = "theories";
}
{
case = "experimental-reals";
out = "experimental_reals";
}
{
case = "reals-stdlib";
out = "reals_stdlib";
}
{
case = "analysis-stdlib";
out = "analysis_stdlib";
}
] package;
pname = if package == "single" then "mathcomp-analysis-single" else "mathcomp-${package}";
derivation = mkCoqDerivation {
inherit
version
pname
defaultVersion
release
repo
owner
;
namePrefix = [
"coq"
"mathcomp"
];
propagatedBuildInputs =
intra-deps
++ lib.optionals (lib.elem package [
"classical"
"single"
]) classical-deps
++ lib.optionals (lib.elem package [
"experimental-reals"
"single"
]) experimental-reals-deps
++ lib.optionals (lib.elem package [
"analysis"
"single"
]) analysis-deps
++ lib.optional (lib.elem package [
"reals-stdlib"
"analysis-stdlib"
"single"
]) stdlib;
preBuild = ''
cd ${pkgpath}
'';
meta = {
description = "Analysis library compatible with Mathematical Components";
maintainers = [ lib.maintainers.cohencyril ];
license = lib.licenses.cecill-c;
};
passthru = lib.mapAttrs (package: deps: mathcomp_ package) packages;
};
# split packages didn't exist before 0.6, so building nothing in that case
patched-derivation1 = derivation.overrideAttrs (
o:
lib.optionalAttrs
(
o.pname != null
&& o.pname != "mathcomp-analysis"
&& o.version != null
&& o.version != "dev"
&& lib.versions.isLt "0.6" o.version
)
{
preBuild = "";
buildPhase = "echo doing nothing";
installPhase = "echo doing nothing";
}
);
patched-derivation2 = patched-derivation1.overrideAttrs (
o:
lib.optionalAttrs (
o.pname != null
&& o.pname == "mathcomp-analysis"
&& o.version != null
&& o.version != "dev"
&& lib.versions.isLt "0.6" o.version
) { preBuild = ""; }
);
# only packages classical and analysis existed before 1.7, so building nothing in that case
patched-derivation3 = patched-derivation2.overrideAttrs (
o:
lib.optionalAttrs
(
o.pname != null
&& o.pname != "mathcomp-classical"
&& o.pname != "mathcomp-analysis"
&& o.version != null
&& o.version != "dev"
&& lib.versions.isLt "1.7" o.version
)
{
preBuild = "";
buildPhase = "echo doing nothing";
installPhase = "echo doing nothing";
}
);
patched-derivation = patched-derivation3.overrideAttrs (
o:
lib.optionalAttrs (o.version != null && (o.version == "dev" || lib.versions.isGe "0.3.4" o.version))
{
propagatedBuildInputs = o.propagatedBuildInputs ++ [ hierarchy-builder ];
}
);
in
patched-derivation;
in
mathcomp_ (if single then "single" else "analysis")

View File

@@ -0,0 +1,52 @@
{
coq,
mkCoqDerivation,
mathcomp,
coqeal,
mathcomp-real-closed,
mathcomp-bigenough,
mathcomp-zify,
mathcomp-algebra-tactics,
lib,
version ? null,
}:
mkCoqDerivation {
pname = "apery";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.13" "8.16") (range "1.12.0" "1.17.0") "1.0.2")
]
null;
release."1.0.2".sha256 = "sha256-llxyMKYvWUA7fyroG1S/jtpioAoArmarR1edi3cikcY=";
propagatedBuildInputs = [
mathcomp.field
coqeal
mathcomp-real-closed
mathcomp-bigenough
mathcomp-zify
mathcomp-algebra-tactics
];
meta = {
description = "Formally verified proof in Coq, by computer algebra, that ζ(3) is irrational";
license = lib.licenses.cecill-c;
};
}

View File

@@ -0,0 +1,40 @@
{
coq,
mkCoqDerivation,
mathcomp-boot,
lib,
version ? null,
}:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "bigenough";
owner = "math-comp";
release = {
"1.0.0".sha256 = "10g0gp3hk7wri7lijkrqna263346wwf6a3hbd4qr9gn8hmsx70wg";
"1.0.1".sha256 = "sha256:02f4dv4rz72liciwxb2k7acwx6lgqz4381mqyq5854p3nbyn06aw";
"1.0.2".sha256 = "sha256-fJ/5xr91VtvpIoaFwb3PlnKl6UHG6GEeBRVGZrVLMU0=";
};
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.10" "9.1") "1.0.2")
(case (range "8.5" "8.14") "1.0.0")
] null;
propagatedBuildInputs = [ mathcomp-boot ];
meta = {
description = "Small library to do epsilon - N reasonning";
license = lib.licenses.cecill-b;
};
}

View File

@@ -0,0 +1,67 @@
{
coq,
mkCoqDerivation,
mathcomp-boot,
lib,
version ? null,
}:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "finmap";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-boot.version ]
[
(case (range "8.20" "9.1") (range "2.3" "2.4") "2.2.0")
(case (range "8.16" "9.0") (range "2.0" "2.3") "2.1.0")
(case (range "8.16" "8.18") (range "2.0" "2.1") "2.0.0")
(case (range "8.13" "8.20") (range "1.12" "1.19") "1.5.2")
(case (isGe "8.10") (range "1.11" "1.17") "1.5.1")
(case (range "8.7" "8.11") "1.11.0" "1.5.0")
(case (isEq "8.11") (range "1.8" "1.10") "1.4.0+coq-8.11")
(case (range "8.7" "8.11.0") (range "1.8" "1.10") "1.4.0")
(case (range "8.7" "8.11.0") (range "1.8" "1.10") "1.3.4")
(case (range "8.7" "8.9") "1.7.0" "1.1.0")
(case (range "8.6" "8.7") (range "1.6.1" "1.7") "1.0.0")
]
null;
release = {
"2.2.0".sha256 = "sha256-oDQEZOutrJxmN8FvzovUIhqw0mwc8Ej7thrieJrW8BY=";
"2.1.0".sha256 = "sha256-gh0cnhdVDyo+D5zdtxLc10kGKQLQ3ITzHnMC45mCtpY=";
"2.0.0".sha256 = "sha256-0Wr1ZUYVuZH74vawO4EZlZ+K3kq+s1xEz/BfzyKj+wk=";
"1.5.2".sha256 = "sha256-0KmmSjc2AlUo6BKr9RZ4FjL9wlGISlTGU0X1Eu7l4sw=";
"1.5.1".sha256 = "0ryfml4pf1dfya16d8ma80favasmrygvspvb923n06kfw9v986j7";
"1.5.0".sha256 = "0vx9n1fi23592b3hv5p5ycy7mxc8qh1y5q05aksfwbzkk5zjkwnq";
"1.4.1".sha256 = "0kx4nx24dml1igk0w0qijmw221r5bgxhwhl5qicnxp7ab3c35s8p";
"1.4.0+coq-8.11".sha256 = "1fd00ihyx0kzq5fblh9vr8s5mr1kg7p6pk11c4gr8svl1n69ppmb";
"1.4.0".sha256 = "0mp82mcmrs424ff1vj3cvd8353r9vcap027h3p0iprr1vkkwjbzd";
"1.3.4".sha256 = "0f5a62ljhixy5d7gsnwd66gf054l26k3m79fb8nz40i2mgp6l9ii";
"1.2.1".sha256 = "0jryb5dq8js3imbmwrxignlk5zh8gwfb1wr4b1s7jbwz410vp7zf";
"1.1.0".sha256 = "05df59v3na8jhpsfp7hq3niam6asgcaipg2wngnzxzqnl86srp2a";
"1.0.0".sha256 = "0sah7k9qm8sw17cgd02f0x84hki8vj8kdz7h15i7rmz08rj0whpa";
};
propagatedBuildInputs = [ mathcomp-boot ];
meta = {
description = "Finset and finmap library";
license = lib.licenses.cecill-b;
};
}

View File

@@ -0,0 +1,72 @@
{
coq,
mkCoqDerivation,
mathcomp-analysis,
mathcomp-analysis-stdlib,
mathcomp-algebra-tactics,
interval,
lib,
version ? null,
}:
(mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "infotheo";
owner = "affeldt-aist";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-analysis.version ]
[
(case (range "8.20" "8.20") (isGe "1.12") "0.9.4")
(case (range "8.19" "8.20") (range "1.10" "1.11") "0.9.3")
(case (range "8.19" "8.20") (isGe "1.9") "0.9.1")
(case (range "8.19" "8.20") (isGe "1.7") "0.7.7")
(case (range "8.19" "8.20") (isGe "1.7") "0.7.5")
(case (range "8.18" "8.20") (isGe "1.5") "0.7.3")
(case (range "8.18" "8.19") (isGe "1.2") "0.7.2")
(case (range "8.17" "8.19") (isGe "1.0") "0.7.1")
(case (isGe "8.17") (range "0.6.6" "0.7.0") "0.6.1")
(case (range "8.17" "8.18") (range "0.6.0" "0.6.7") "0.5.2")
(case (range "8.15" "8.16") (range "0.5.4" "0.6.5") "0.5.1")
]
null;
release."0.9.4".sha256 = "sha256-btHOBNMdXvlG2jxC04+4qmIjeyuaqtyugm2Ruj3lQr8=";
release."0.9.3".sha256 = "sha256-8+cnVKNAvZ3MVV3BpS8UmCIxJphsQRBv3swek1eEBjE=";
release."0.9.1".sha256 = "sha256-WI20HxMHr1ZUwOGPIUl+nRI8TxVUa2+F1xcGjRDHO9g=";
release."0.7.7".sha256 = "sha256-kEbpMl7U+I2kvqi1VrjhIVFkZFO6h0tTHEUZRbHYG7E=";
release."0.7.5".sha256 = "sha256-pzPo+Acjx3vlyqOkSZQ8uT2BDLSTfbAnRm39e+/CqE0=";
release."0.7.3".sha256 = "sha256-7+qPtE1KfDmo9ZsQtWMzoR2MYnFpTjFHK/yZYVm+GxA=";
release."0.7.2".sha256 = "sha256-dekrdVmuTcqXXmKhIb831EKtMhbPrXHJZhzmGb9rdRo=";
release."0.7.1".sha256 = "sha256-/4Elb35SmscG6EjEcHYDo+AmWrpBUlygZL0WhaD+fcY=";
release."0.6.1".sha256 = "sha256-tFB5lrwRPIlHkP+ebgcJwu03Cc9yVaOINOAo8Bf2LT4=";
release."0.5.1".sha256 = "sha256-yBBl5l+V+dggsg5KM59Yo9CULKog/xxE8vrW+ZRnX7Y=";
release."0.5.2".sha256 = "sha256-8WAnAV53c0pMTdwj8XcUDUkLZbpUgIQbEOgOb63uHQA=";
propagatedBuildInputs = [ mathcomp-analysis-stdlib ];
meta = with lib; {
description = "Coq formalization of information theory and linear error-correcting codes";
license = licenses.lgpl21Plus;
};
}).overrideAttrs
(o: {
propagatedBuildInputs =
o.propagatedBuildInputs
++ lib.optional (lib.versions.isGe "0.6.1" o.version || o.version == "dev") mathcomp-algebra-tactics
++ lib.optional (lib.versions.isGe "0.7.2" o.version || o.version == "dev") interval;
})

View File

@@ -0,0 +1,75 @@
{
coq,
mkCoqDerivation,
mathcomp,
mathcomp-bigenough,
lib,
version ? null,
}:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "real-closed";
owner = "math-comp";
inherit version;
release = {
"2.0.3".sha256 = "sha256-heZ7aZ7TO9YNAESIvbAc1qqzO91xMyLAox8VKueIk/s=";
"2.0.2".sha256 = "sha256-hBo9JMtmXDYBmf5ihKGksQLHv3c0+zDBnd8/aI2V/ao=";
"2.0.1".sha256 = "sha256-tQTI3PCl0q1vWpps28oATlzOI8TpVQh1jhTwVmhaZic=";
"2.0.0".sha256 = "sha256-sZvfiC5+5Lg4nRhfKKqyFzovCj2foAhqaq/w9F2bdU8=";
"1.1.4".sha256 = "sha256-8Hs6XfowbpeRD8RhMRf4ZJe2xf8kE0e8m7bPUzR/IM4=";
"1.1.3".sha256 = "1vwmmnzy8i4f203i2s60dn9i0kr27lsmwlqlyyzdpsghvbr8h5b7";
"1.1.2".sha256 = "0907x4nf7nnvn764q3x9lx41g74rilvq5cki5ziwgpsdgb98pppn";
"1.1.1".sha256 = "0ksjscrgq1i79vys4zrmgvzy2y4ylxa8wdsf4kih63apw6v5ws6b";
"1.0.5".sha256 = "0q8nkxr9fba4naylr5xk7hfxsqzq2pvwlg1j0xxlhlgr3fmlavg2";
"1.0.4".sha256 = "058v9dj973h9kfhqmvcy9a6xhhxzljr90cf99hdfcdx68fi2ha1b";
"1.0.3".sha256 = "1xbzkzqgw5p42dx1liy6wy8lzdk39zwd6j14fwvv5735k660z7yb";
"1.0.1".sha256 = "0j81gkjbza5vg89v4n9z598mfdbql416963rj4b8fzm7dp2r4rxg";
};
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.version mathcomp.version ]
[
(case (range "8.18" "9.1") (isGe "2.2.0") "2.0.3")
(case (range "8.17" "9.0") (range "2.1.0" "2.3.0") "2.0.2")
(case (range "8.17" "8.20") (range "2.0.0" "2.2.0") "2.0.1")
(case (range "8.16" "8.19") (range "2.0.0" "2.2.0") "2.0.0")
(case (range "8.13" "8.19") (range "1.13.0" "1.19.0") "1.1.4")
(case (isGe "8.13") (range "1.12.0" "1.18.0") "1.1.3")
(case (isGe "8.10") (range "1.12.0" "1.18.0") "1.1.2")
(case (isGe "8.7") "1.11.0" "1.1.1")
(case (isGe "8.7") (range "1.9.0" "1.10.0") "1.0.4")
(case (isGe "8.7") "1.8.0" "1.0.3")
(case (isGe "8.7") "1.7.0" "1.0.1")
]
null;
propagatedBuildInputs = [
mathcomp.ssreflect
mathcomp.algebra
mathcomp.field
mathcomp.fingroup
mathcomp.solvable
mathcomp-bigenough
];
meta = {
description = "Mathematical Components Library on real closed fields";
license = lib.licenses.cecill-c;
};
}

View File

@@ -0,0 +1,54 @@
{
coq,
mkCoqDerivation,
mathcomp-ssreflect,
mathcomp-fingroup,
lib,
version ? null,
}@args:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "tarjan";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-ssreflect.version ]
[
(case (range "8.16" "9.1") (range "2.0.0" "2.4.0") "1.0.3")
(case (range "8.16" "9.0") (range "2.0.0" "2.3.0") "1.0.2")
(case (range "8.12" "8.18") (range "1.12.0" "1.17.0") "1.0.1")
(case (range "8.10" "8.16") (range "1.12.0" "1.17.0") "1.0.0")
]
null;
release."1.0.3".sha256 = "sha256-5lpOCDyH6NFzGLvnXHHAnR7Qv5oXsUyC8TLBFrIiBag=";
release."1.0.2".sha256 = "sha256-U20xgA+e9KTRdvILD1cxN6ia+dlA8uBTIbc4QlKz9ss=";
release."1.0.1".sha256 = "sha256-utNjFCAqC5xOuhdyKhfMZkRYJD0xv9Gt6U3ZdQ56mek=";
release."1.0.0".sha256 = "sha256:0r459r0makshzwlygw6kd4lpvdjc43b3x5y9aa8x77f2z5gymjq1";
propagatedBuildInputs = [
mathcomp-ssreflect
mathcomp-fingroup
];
meta = {
description = "Proofs of Tarjan and Kosaraju connected components algorithms";
license = lib.licenses.cecill-b;
};
}

View File

@@ -0,0 +1,89 @@
{
fetchurl,
coq,
mkCoqDerivation,
mathcomp,
stdlib,
lib,
version ? null,
}:
let
namePrefix = [
"coq"
"mathcomp"
];
pname = "word";
fetcher =
{
domain,
owner,
repo,
rev,
sha256 ? null,
...
}:
let
prefix = "https://${domain}/${owner}/${repo}/";
in
if sha256 == null then
fetchTarball { url = "${prefix}archive/refs/heads/${rev}.tar.gz"; }
else
fetchurl {
url = "${prefix}releases/download/${rev}/${
lib.concatStringsSep "-" (namePrefix ++ [ pname ])
}-${rev}.tbz";
inherit sha256;
};
in
mkCoqDerivation {
inherit namePrefix pname fetcher;
owner = "jasmin-lang";
repo = "coqword";
useDune = true;
releaseRev = v: "v${v}";
release."3.2".sha256 = "sha256-4HOFFQzKbHIq+ktjJaS5b2Qr8WL1eQ26YxF4vt1FdWM=";
release."3.1".sha256 = "sha256-qQHis6554sG7NpCpWhT2wvelnxsrbEPVNv3fpxwxHMU=";
release."3.0".sha256 = "sha256-xEgx5HHDOimOJbNMtIVf/KG3XBemOS9XwoCoW6btyJ4=";
release."2.4".sha256 = "sha256-OG99PfjhtKikxM9aBKRsej1gTo1O/llAdXdiiyjZf2Q=";
release."2.3".sha256 = "sha256-whU1yvFFuxpwQutW41B/WBg5DrVZJW/Do/GuHtzuI3U=";
release."2.2".sha256 = "sha256-8BB6SToCrMZTtU78t2K+aExuxk9O1lCqVQaa8wabSm8=";
release."2.1".sha256 = "sha256-895gZzwwX8hN9UUQRhcgRlphHANka9R0PRotfmSEelA=";
release."2.0".sha256 = "sha256-ySg3AviGGY5jXqqn1cP6lTw3aS5DhawXEwNUgj7pIjA=";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.16" "9.1") (isGe "2.0") "3.2")
(case (range "8.12" "8.20") (range "1.12" "1.19") "2.4")
]
null;
propagatedBuildInputs = [
mathcomp.algebra
mathcomp.ssreflect
mathcomp.fingroup
stdlib
];
meta = with lib; {
description = "Yet Another Coq Library on Machine Words";
maintainers = [ maintainers.vbgl ];
license = licenses.mit;
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
mkCoqDerivation,
coq,
mathcomp-boot,
mathcomp-fingroup,
mathcomp-algebra,
stdlib,
version ? null,
}:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "zify";
repo = "mczify";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp-algebra.version ]
[
(case (range "8.16" "9.1") (isGe "2.0.0") "1.5.0+2.0+8.16")
(case (range "8.13" "8.20") (range "1.12" "1.19.0") "1.3.0+1.12+8.13")
(case (range "8.13" "8.16") (range "1.12" "1.17.0") "1.1.0+1.12+8.13")
]
null;
release."1.0.0+1.12+8.13".sha256 = "1j533vx6lacr89bj1bf15l1a0s7rvrx4l00wyjv99aczkfbz6h6k";
release."1.1.0+1.12+8.13".sha256 = "1plf4v6q5j7wvmd5gsqlpiy0vwlw6hy5daq2x42gqny23w9mi2pr";
release."1.3.0+1.12+8.13".sha256 = "sha256-ebfY8HatP4te44M6o84DSLpDCkMu4IroPCy+HqzOnTE=";
release."1.5.0+2.0+8.16".sha256 = "sha256-boBYGvXdGFc6aPnjgSZYSoW4kmN5khtNrSV3DUv9DqM=";
propagatedBuildInputs = [
mathcomp-boot
mathcomp-algebra
mathcomp-fingroup
stdlib
];
meta = {
description = "Micromega tactics for Mathematical Components";
maintainers = with lib.maintainers; [ cohencyril ];
};
}

View File

@@ -0,0 +1,245 @@
############################################################################
# This file mainly provides the `mathcomp` derivation, which is #
# essentially a meta-package containing all core mathcomp libraries #
# (ssreflect fingroup algebra solvable field character). They can be #
# accessed individually through the passthrough attributes of mathcomp #
# bearing the same names (mathcomp.ssreflect, etc). #
############################################################################
# Compiling a custom version of mathcomp using `mathcomp.override`. #
# This is the replacement for the former `mathcomp_ config` function. #
# See the documentation at doc/languages-frameworks/coq.section.md. #
############################################################################
{
lib,
ncurses,
graphviz,
lua,
fetchzip,
mkCoqDerivation,
withDoc ? false,
single ? false,
coq,
hierarchy-builder,
stdlib,
version ? null,
}@args:
let
repo = "math-comp";
owner = "math-comp";
withDoc = single && (args.withDoc or false);
defaultVersion =
let
case = case: out: { inherit case out; };
inherit (lib.versions) range;
in
lib.switch coq.coq-version [
(case (range "8.20" "9.1") "2.4.0")
(case (range "8.19" "9.0") "2.3.0")
(case (range "8.17" "8.20") "2.2.0")
(case (range "8.17" "8.18") "2.1.0")
(case (range "8.17" "8.18") "2.0.0")
(case (range "8.19" "8.20") "1.19.0")
(case (range "8.17" "8.18") "1.18.0")
(case (range "8.15" "8.18") "1.17.0")
(case (range "8.13" "8.18") "1.16.0")
(case (range "8.14" "8.16") "1.15.0")
(case (range "8.11" "8.15") "1.14.0")
(case (range "8.11" "8.15") "1.13.0")
(case (range "8.10" "8.13") "1.12.0")
(case (range "8.7" "8.12") "1.11.0")
(case (range "8.7" "8.11") "1.10.0")
(case (range "8.7" "8.11") "1.9.0")
(case (range "8.7" "8.9") "1.8.0")
(case (range "8.6" "8.9") "1.7.0")
(case (range "8.5" "8.7") "1.6.4")
] null;
release = {
"2.4.0".sha256 = "sha256-A1XgLLwZRvKS8QyceCkSQa7ue6TYyf5fMft5gSx9NOs=";
"2.3.0".sha256 = "sha256-wa6OBig8rhAT4iwupSylyCAMhO69rADa0MQIX5zzL+Q=";
"2.2.0".sha256 = "sha256-SPyWSI5kIP5w7VpgnQ4vnK56yEuWnJylNQOT7M77yoQ=";
"2.1.0".sha256 = "sha256-XDLx0BIkVRkSJ4sGCIE51j3rtkSGemNTs/cdVmTvxqo=";
"2.0.0".sha256 = "sha256-dpOmrHYUXBBS9kmmz7puzufxlbNpIZofpcTvJFLG5DI=";
"1.19.0".sha256 = "sha256-3kxS3qA+7WwQkXoFC/+kq3OEkv4kMEzQ/G3aXPsp1Q4=";
"1.18.0".sha256 = "sha256-mJJ/zvM2WtmBZU3U4oid/zCMvDXei/93v5hwyyqwiiY=";
"1.17.0".sha256 = "sha256-bUfoSTMiW/GzC1jKFay6DRqGzKPuLOSUsO6/wPSFwNg=";
"1.16.0".sha256 = "sha256-gXTKhRgSGeRBUnwdDezMsMKbOvxdffT+kViZ9e1gEz0=";
"1.15.0".sha256 = "1bp0jxl35ms54s0mdqky15w9af03f3i0n06qk12k4gw1xzvwqv21";
"1.14.0".sha256 = "07yamlp1c0g5nahkd2gpfhammcca74ga2s6qr7a3wm6y6j5pivk9";
"1.13.0".sha256 = "0j4cz2y1r1aw79snkcf1pmicgzf8swbaf9ippz0vg99a572zqzri";
"1.12.0".sha256 = "1ccfny1vwgmdl91kz5xlmhq4wz078xm4z5wpd0jy5rn890dx03wp";
"1.11.0".sha256 = "06a71d196wd5k4wg7khwqb7j7ifr7garhwkd54s86i0j7d6nhl3c";
"1.10.0".sha256 = "1b9m6pwxxyivw7rgx82gn5kmgv2mfv3h3y0mmjcjfypi8ydkrlbv";
"1.9.0".sha256 = "0lid9zaazdi3d38l8042lczb02pw5m9wq0yysiilx891hgq2p81r";
"1.8.0".sha256 = "07l40is389ih8bi525gpqs3qp4yb2kl11r9c8ynk1ifpjzpnabwp";
"1.7.0".sha256 = "0wnhj9nqpx2bw6n1l4i8jgrw3pjajvckvj3lr4vzjb3my2lbxdd1";
"1.6.4".sha256 = "09ww48qbjsvpjmy1g9yhm0rrkq800ffq21p6fjkbwd34qvd82raz";
"1.6.1".sha256 = "1ilw6vm4dlsdv9cd7kmf0vfrh2kkzr45wrqr8m37miy0byzr4p9i";
};
releaseRev = v: "mathcomp-${v}";
# list of core mathcomp packages sorted by dependency order
packages = {
"boot" = [ ];
"order" = [ "boot" ];
"fingroup" = [ "boot" ];
"ssreflect" = [
"boot"
"order"
];
"algebra" = [
"order"
"fingroup"
];
"solvable" = [ "algebra" ];
"field" = [ "solvable" ];
"character" = [ "field" ];
"all" = [ "character" ];
};
mathcomp_ =
package:
let
mathcomp-deps = lib.optionals (package != "single") (map mathcomp_ packages.${package});
pkgpath = if package == "single" then "." else package;
pname = if package == "single" then "mathcomp" else "mathcomp-${package}";
pkgallMake = ''
echo "all.v" > Make
echo "-I ." >> Make
echo "-R . mathcomp.all" >> Make
'';
derivation = mkCoqDerivation (
{
inherit
version
pname
defaultVersion
release
releaseRev
repo
owner
;
mlPlugin = lib.versions.isLe "8.6" coq.coq-version;
nativeBuildInputs = lib.optionals withDoc [
graphviz
lua
];
buildInputs = [ ncurses ];
propagatedBuildInputs = mathcomp-deps;
buildFlags = lib.optional withDoc "doc";
preBuild = ''
if [[ -f etc/utils/ssrcoqdep ]]
then patchShebangs etc/utils/ssrcoqdep
fi
if [[ -f etc/buildlibgraph ]]
then patchShebangs etc/buildlibgraph
fi
''
+ ''
# handle mathcomp < 2.4.0 which had an extra base mathcomp directory
test -d mathcomp && cd mathcomp
cd ${pkgpath} || cd ssreflect # before 2.5, boot didn't exist, make it behave as ssreflect
''
+ lib.optionalString (package == "all") pkgallMake;
meta = {
homepage = "https://math-comp.github.io/";
license = lib.licenses.cecill-b;
maintainers = with lib.maintainers; [
vbgl
jwiegley
cohencyril
];
};
}
// lib.optionalAttrs (package != "single") { passthru = lib.mapAttrs (p: _: mathcomp_ p) packages; }
// lib.optionalAttrs withDoc {
htmldoc_template = fetchzip {
url = "https://github.com/math-comp/math-comp.github.io/archive/doc-1.12.0.zip";
sha256 = "0y1352ha2yy6k2dl375sb1r68r1qi9dyyy7dyzj5lp9hxhhq69x8";
};
postBuild = ''
cp -rf _build_doc/* .
rm -r _build_doc
'';
postInstall =
let
tgt = "$out/share/coq/${coq.coq-version}/";
in
lib.optionalString withDoc ''
mkdir -p ${tgt}
cp -r htmldoc ${tgt}
cp -r $htmldoc_template/htmldoc_template/* ${tgt}/htmldoc/
'';
buildTargets = "doc";
extraInstallFlags = [ "-f Makefile.coq" ];
}
);
patched-derivation1 = derivation.overrideAttrs (
o:
lib.optionalAttrs
(
o.pname != null
&& o.pname == "mathcomp-all"
&& o.version != null
&& o.version != "dev"
&& lib.versions.isLt "1.7" o.version
)
{
preBuild = "";
buildPhase = "";
installPhase = "echo doing nothing";
}
);
patched-derivation2 = patched-derivation1.overrideAttrs (
o:
lib.optionalAttrs
(
lib.versions.isLe "8.7" coq.coq-version || (o.version != "dev" && lib.versions.isLe "1.7" o.version)
)
{
installFlags = o.installFlags ++ [ "-f Makefile.coq" ];
}
);
patched-derivation3 = patched-derivation2.overrideAttrs (
o:
lib.optionalAttrs (o.version != null && (o.version == "dev" || lib.versions.isGe "2.0.0" o.version))
{
propagatedBuildInputs = o.propagatedBuildInputs ++ [ hierarchy-builder ];
}
);
patched-derivation4 = patched-derivation3.overrideAttrs (
o:
lib.optionalAttrs (o.version != null && o.version == "2.3.0") {
propagatedBuildInputs = o.propagatedBuildInputs ++ [ stdlib ];
}
);
# boot and order packages didn't exist before 2.5,
# so make boot behave as ssreflect then (c.f., above)
# and building nothing in order and ssreflect
patched-derivation5 = patched-derivation4.overrideAttrs (
o:
lib.optionalAttrs
(
lib.elem package [
"order"
"ssreflect"
]
&& o.version != null
&& o.version != "dev"
&& lib.versions.isLt "2.5" o.version
)
{
preBuild = "";
buildPhase = "echo doing nothing";
installPhase = "echo doing nothing";
}
);
in
patched-derivation5;
in
mathcomp_ (if single then "single" else "all")

View File

@@ -0,0 +1,229 @@
{
lib,
mkCoqDerivation,
single ? false,
coq,
equations,
version ? null,
}@args:
let
repo = "metacoq";
owner = "MetaCoq";
defaultVersion =
let
case = case: out: { inherit case out; };
in
lib.switch coq.coq-version [
(case "8.11" "1.0-beta2-8.11")
(case "8.12" "1.0-beta2-8.12")
# Do not provide 8.13 because it does not compile with equations 1.3 provided by default (only 1.2.3)
# (case "8.13" "1.0-beta2-8.13")
(case "8.14" "1.1-8.14")
(case "8.15" "1.1-8.15")
(case "8.16" "1.1-8.16")
(case "8.17" "1.3.1-8.17")
(case "8.18" "1.3.1-8.18")
(case "8.19" "1.3.3-8.19")
(case "8.20" "1.3.4-8.20")
(case "9.0" "1.3.4-9.0")
] null;
release = {
"1.0-beta2-8.11".sha256 = "sha256-I9YNk5Di6Udvq5/xpLSNflfjRyRH8fMnRzbo3uhpXNs=";
"1.0-beta2-8.12".sha256 = "sha256-I8gpmU9rUQJh0qfp5KOgDNscVvCybm5zX4TINxO1TVA=";
"1.0-beta2-8.13".sha256 = "sha256-IC56/lEDaAylUbMCfG/3cqOBZniEQk8jmI053DBO5l8=";
"1.0-8.14".sha256 = "sha256-iRnaNeHt22JqxMNxOGPPycrO9EoCVjusR2s0GfON1y0=";
"1.0-8.15".sha256 = "sha256-8RUC5dHNfLJtJh+IZG4nPTAVC8ZKVh2BHedkzjwLf/k=";
"1.0-8.16".sha256 = "sha256-7rkCAN4PNnMgsgUiiLe2TnAliknN75s2SfjzyKCib/o=";
"1.1-8.14".sha256 = "sha256-6vViCNQl6BnGgOHX3P/OLfFXN4aUfv4RbDokfz2BgQI=";
"1.1-8.15".sha256 = "sha256-qCD3wFW4E+8vSVk4XoZ0EU4PVya0al+JorzS9nzmR/0=";
"1.1-8.16".sha256 = "sha256-cTK4ptxpPPlqxAhasZFX3RpSlsoTZwhTqs2A3BZy9sA=";
"1.2.1-8.17".sha256 = "sha256-FP4upuRsG8B5Q5FIr76t+ecRirrOUX0D1QiLq0/zMyE=";
"1.2.1-8.18".sha256 = "sha256-49g5db2Bv8HpltptJdxA7zrmgNFGC6arx5h2mKHhrko=";
"1.3.1-8.17".sha256 = "sha256-l0/QLC7V3zSk/FsaE2eL6tXy2BzbcI5MAk/c+FESwnc=";
"1.3.1-8.18".sha256 = "sha256-L6Ym4Auwqaxv5tRmJLSVC812dxCqdUU5aN8+t5HVYzY=";
"1.3.1-8.19".sha256 = "sha256-fZED/Uel1jt5XF83dR6HfyhSkfBdLkET8C/ArDgsm64=";
"1.3.2-8.19".sha256 = "sha256-e5Pm1AhaQrO6JoZylSXYWmeXY033QflQuCBZhxGH8MA=";
"1.3.2-8.20".sha256 = "sha256-4J7Ly4Fc2E/I6YqvzTLntVVls5t94OUOjVMKJyyJdw8=";
"1.3.3-8.19".sha256 = "sha256-SBTv49zQXZ+oGvIqWM53hjBKru9prFgZRv8gVgls40k=";
"1.3.4-8.20".sha256 = "sha256-ofRP0Uo48G2LBuIy/5ZLyK+iVZXleKiwfMEBD0rX9fQ=";
"1.3.4-9.0".sha256 = "sha256-BiAeuwL6WvDNs+ZGzPWj59kTS69J4kjrS3XIZyzpLOQ=";
};
releaseRev = v: "v${v}";
# list of core metacoq packages and their dependencies
packages = {
"utils" = [ ];
"common" = [ "utils" ];
"template-coq" = [ "common" ];
"pcuic" =
if (lib.versionAtLeast coq.coq-version "8.17" || coq.coq-version == "dev") then
[ "common" ]
else
[ "template-coq" ];
"safechecker" = [ "pcuic" ];
"template-pcuic" = [
"template-coq"
"pcuic"
];
"erasure" = [
"safechecker"
"template-pcuic"
];
"quotation" = [
"template-coq"
"pcuic"
"template-pcuic"
];
"safechecker-plugin" = [
"template-pcuic"
"safechecker"
];
"erasure-plugin" = [
"template-pcuic"
"erasure"
];
"translations" = [ "template-coq" ];
"all" = [
"safechecker-plugin"
"erasure-plugin"
"translations"
"quotation"
];
};
template-coq = metacoq_ "template-coq";
metacoq_ =
package:
let
metacoq-deps = lib.optionals (package != "single") (map metacoq_ packages.${package});
pkgpath = if package == "single" then "./" else "./${package}";
pname = if package == "all" then "metacoq" else "metacoq-${package}";
pkgallMake = ''
mkdir all
echo "all:" > all/Makefile
echo "install:" >> all/Makefile
'';
derivation =
(mkCoqDerivation (
{
inherit
version
pname
defaultVersion
release
releaseRev
repo
owner
;
mlPlugin = true;
propagatedBuildInputs = [
equations
coq.ocamlPackages.zarith
]
++ metacoq-deps;
patchPhase =
if lib.versionAtLeast coq.coq-version "8.17" || coq.coq-version == "dev" then
''
patchShebangs ./configure.sh
patchShebangs ./template-coq/update_plugin.sh
patchShebangs ./template-coq/gen-src/to-lower.sh
patchShebangs ./safechecker-plugin/clean_extraction.sh
patchShebangs ./erasure-plugin/clean_extraction.sh
echo "CAMLFLAGS+=-w -60 # Unused module" >> ./safechecker/Makefile.plugin.local
sed -i -e 's/mv $i $newi;/mv $i tmp; mv tmp $newi;/' ./template-coq/gen-src/to-lower.sh ./safechecker-plugin/clean_extraction.sh ./erasure-plugin/clean_extraction.sh
''
else
''
patchShebangs ./configure.sh
patchShebangs ./template-coq/update_plugin.sh
patchShebangs ./template-coq/gen-src/to-lower.sh
patchShebangs ./pcuic/clean_extraction.sh
patchShebangs ./safechecker/clean_extraction.sh
patchShebangs ./erasure/clean_extraction.sh
echo "CAMLFLAGS+=-w -60 # Unused module" >> ./safechecker/Makefile.plugin.local
sed -i -e 's/mv $i $newi;/mv $i tmp; mv tmp $newi;/' ./template-coq/gen-src/to-lower.sh ./pcuic/clean_extraction.sh ./safechecker/clean_extraction.sh ./erasure/clean_extraction.sh
'';
configurePhase =
lib.optionalString (package == "all") pkgallMake
+ ''
touch ${pkgpath}/metacoq-config
''
+
lib.optionalString
(lib.elem package [
"erasure"
"template-pcuic"
"quotation"
"safechecker-plugin"
"erasure-plugin"
"translations"
])
''
echo "-I ${template-coq}/lib/coq/${coq.coq-version}/user-contrib/MetaCoq/Template/" > ${pkgpath}/metacoq-config
''
+ lib.optionalString (package == "single") ''
./configure.sh local
'';
preBuild = ''
cd ${pkgpath}
'';
meta = {
homepage = "https://metacoq.github.io/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ cohencyril ];
};
}
// lib.optionalAttrs (package != "single") {
passthru = lib.mapAttrs (package: deps: metacoq_ package) packages;
}
)).overrideAttrs
(
o:
let
requiresOcamlStdlibShims =
lib.versionAtLeast o.version "1.0-8.16"
|| (o.version == "dev" && (lib.versionAtLeast coq.coq-version "8.16" || coq.coq-version == "dev"));
in
{
propagatedBuildInputs =
o.propagatedBuildInputs ++ lib.optional requiresOcamlStdlibShims coq.ocamlPackages.stdlib-shims;
}
);
# utils, common, template-pcuic, quotation, safechecker-plugin, and erasure-plugin
# packages didn't exist before 1.2, so building nothing in that case
patched-derivation = derivation.overrideAttrs (
o:
lib.optionalAttrs
(
o.pname != null
&& lib.elem package [
"utils"
"common"
"template-pcuic"
"quotation"
"safechecker-plugin"
"erasure-plugin"
]
&& o.version != null
&& o.version != "dev"
&& lib.versions.isLt "1.2" o.version
)
{
patchPhase = "";
configurePhase = "";
preBuild = "";
buildPhase = "echo doing nothing";
installPhase = "echo doing nothing";
}
);
in
patched-derivation;
in
metacoq_ (if single then "single" else "all")

View File

@@ -0,0 +1,35 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
(mkCoqDerivation {
pname = "metalib";
owner = "plclub";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.coq-version [
{
case = range "8.14" "8.18";
out = "8.15";
}
{
case = range "8.10" "8.13";
out = "8.10";
}
] null;
releaseRev = v: "coq${v}";
release."8.15".sha256 = "0wbp058zwa4bkdjj38aysy2g1avf9nrh8q23a3dil0q00qczi616";
release."8.10".sha256 = "0wbypc05d2lqfm9qaw98ynr5yc1p0ipsvyc3bh1rk9nz7zwirmjs";
meta = with lib; {
license = licenses.mit;
maintainers = [ maintainers.jwiegley ];
};
}).overrideAttrs
(oldAttrs: {
sourceRoot = "${oldAttrs.src.name}/Metalib";
})

View File

@@ -0,0 +1,144 @@
{
lib,
mkCoqDerivation,
single ? false,
coq,
equations,
version ? null,
}@args:
let
repo = "metarocq";
owner = "MetaRocq";
defaultVersion =
let
case = case: out: { inherit case out; };
in
lib.switch coq.coq-version [
(case "9.0" "1.4-9.0")
] null;
release = {
"1.4-9.0".sha256 = "sha256-5QecDAMkvgfDPZ7/jDfnOgcE+Eb1LTAozP7nz6nkuxg=";
};
releaseRev = v: "v${v}";
# list of core metarocq packages and their dependencies
packages = {
"utils" = [ ];
"common" = [ "utils" ];
"template-rocq" = [ "common" ];
"pcuic" = [ "common" ];
"safechecker" = [ "pcuic" ];
"template-pcuic" = [
"template-rocq"
"pcuic"
];
"erasure" = [
"safechecker"
"template-pcuic"
];
"quotation" = [
"template-rocq"
"pcuic"
"template-pcuic"
];
"safechecker-plugin" = [
"template-pcuic"
"safechecker"
];
"erasure-plugin" = [
"template-pcuic"
"erasure"
];
"translations" = [ "template-rocq" ];
"all" = [
"safechecker-plugin"
"erasure-plugin"
"translations"
"quotation"
];
};
template-rocq = metarocq_ "template-rocq";
metarocq_ =
package:
let
metarocq-deps = lib.optionals (package != "single") (map metarocq_ packages.${package});
pkgpath = if package == "single" then "./" else "./${package}";
pname = if package == "all" then "metarocq" else "metarocq-${package}";
pkgallMake = ''
mkdir all
echo "all:" > all/Makefile
echo "install:" >> all/Makefile
'';
derivation = mkCoqDerivation (
{
inherit
version
pname
defaultVersion
release
releaseRev
repo
owner
;
mlPlugin = true;
propagatedBuildInputs = [
equations
coq.ocamlPackages.zarith
coq.ocamlPackages.stdlib-shims
]
++ metarocq-deps;
patchPhase = ''
patchShebangs ./configure.sh
patchShebangs ./template-rocq/update_plugin.sh
patchShebangs ./template-rocq/gen-src/to-lower.sh
patchShebangs ./safechecker-plugin/clean_extraction.sh
patchShebangs ./erasure-plugin/clean_extraction.sh
echo "CAMLFLAGS+=-w -60 # Unused module" >> ./safechecker/Makefile.plugin.local
sed -i -e 's/mv $i $newi;/mv $i tmp; mv tmp $newi;/' ./template-rocq/gen-src/to-lower.sh ./safechecker-plugin/clean_extraction.sh ./erasure-plugin/clean_extraction.sh
'';
configurePhase =
lib.optionalString (package == "all") pkgallMake
+ ''
touch ${pkgpath}/metarocq-config
''
+
lib.optionalString
(lib.elem package [
"erasure"
"template-pcuic"
"quotation"
"safechecker-plugin"
"erasure-plugin"
"translations"
])
''
echo "-I ${template-rocq}/lib/coq/${coq.coq-version}/user-contrib/MetaRocq/Template/" > ${pkgpath}/metarocq-config
''
+ lib.optionalString (package == "single") ''
./configure.sh local
'';
preBuild = ''
cd ${pkgpath}
'';
meta = {
homepage = "https://metarocq.github.io/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ cohencyril ];
};
}
// lib.optionalAttrs (package != "single") {
passthru = lib.mapAttrs (package: deps: metarocq_ package) packages;
}
);
in
derivation;
in
metarocq_ (if single then "single" else "all")

View File

@@ -0,0 +1,33 @@
{
lib,
mkCoqDerivation,
coq,
unicoq,
version ? null,
}:
mkCoqDerivation {
pname = "Mtac2";
owner = "Mtac2";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.19" "8.19";
out = "1.4-coq${coq.coq-version}";
}
] null;
release."1.4-coq8.19".sha256 = "sha256-G9eK0eLyECdT20/yf8yyz7M8Xq2WnHHaHpxVGP0yTtU=";
releaseRev = v: "v${v}";
mlPlugin = true;
propagatedBuildInputs = [ unicoq ];
meta = with lib; {
description = "Typed tactic language for Coq";
license = licenses.mit;
};
preBuild = ''
coq_makefile -f _CoqProject -o Makefile
patchShebangs tests/sf-5/configure.sh
'';
}

View File

@@ -0,0 +1,92 @@
{
coq,
mkCoqDerivation,
mathcomp,
mathcomp-finmap,
mathcomp-bigenough,
lib,
version ? null,
useDune ? false,
}@args:
mkCoqDerivation {
namePrefix = [
"coq"
"mathcomp"
];
pname = "multinomials";
owner = "math-comp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "8.18" "9.1") (range "2.1.0" "2.4.0") "2.4.0")
(case (range "8.17" "9.0") (range "2.1.0" "2.3.0") "2.3.0")
(case (range "8.17" "8.20") (isGe "2.1.0") "2.2.0")
(case (range "8.16" "8.18") "2.1.0" "2.1.0")
(case (range "8.16" "8.18") "2.0.0" "2.0.0")
(case (isGe "8.15") (range "1.15.0" "1.19.0") "1.6.0")
(case (isGe "8.10") (range "1.13.0" "1.17.0") "1.5.6")
(case (range "8.10" "8.16") (range "1.12.0" "1.15.0") "1.5.5")
(case (range "8.10" "8.12") "1.12.0" "1.5.3")
(case (range "8.7" "8.12") "1.11.0" "1.5.2")
(case (range "8.7" "8.11") (range "1.8" "1.10") "1.5.0")
(case (range "8.7" "8.10") (range "1.8" "1.10") "1.4")
(case "8.6" (range "1.6" "1.7") "1.1")
]
null;
release = {
"2.4.0".sha256 = "sha256-7zfIddRH+Sl4nhEPtS/lMZwRUZI45AVFpcC/UC8Z0Yo=";
"2.3.0".sha256 = "sha256-usIcxHOAuN+f/j3WjVbPrjz8Hl9ac8R6kYeAKi3CEts=";
"2.2.0".sha256 = "sha256-Cie6paweITwPZy6ej9+qIvHFWknVR382uJPW927t/fo=";
"2.1.0".sha256 = "sha256-QT91SBJ6DXhyg4j/okTvPP6yj2DnnPbnSlJ/p8pvZbY=";
"2.0.0".sha256 = "sha256-2zWHzMBsO2j8EjN7CgCmKQcku9Be8aVlme0LD5p4ab8=";
"1.6.0".sha256 = "sha256-lEM+sjqajIOm1c3lspHqcSIARgMR9RHbTQH4veHLJfU=";
"1.5.6".sha256 = "sha256-cMixgc34T9Ic6v+tYmL49QUNpZpPV5ofaNuHqblX6oY=";
"1.5.5".sha256 = "sha256-VdXA51vr7DZl/wT/15YYMywdD7Gh91dMP9t7ij47qNQ=";
"1.5.4".sha256 = "0s4sbh4y88l125hdxahr56325hdhxxdmqmrz7vv8524llyv3fciq";
"1.5.3".sha256 = "1462x40y2qydjd2wcg8r6qr8cx3xv4ixzh2h8vp9h7arylkja1qd";
"1.5.2".sha256 = "15aspf3jfykp1xgsxf8knqkxv8aav2p39c2fyirw7pwsfbsv2c4s";
"1.5.1".sha256 = "13nlfm2wqripaq671gakz5mn4r0xwm0646araxv0nh455p9ndjs3";
"1.5.0".sha256 = "064rvc0x5g7y1a0nip6ic91vzmq52alf6in2bc2dmss6dmzv90hw";
"1.5.0".rev = "1.5";
"1.4".sha256 = "0vnkirs8iqsv8s59yx1fvg1nkwnzydl42z3scya1xp1b48qkgn0p";
"1.3".sha256 = "0l3vi5n094nx3qmy66hsv867fnqm196r8v605kpk24gl0aa57wh4";
"1.2".sha256 = "1mh1w339dslgv4f810xr1b8v2w7rpx6fgk9pz96q0fyq49fw2xcq";
"1.1".sha256 = "1q8alsm89wkc0lhcvxlyn0pd8rbl2nnxg81zyrabpz610qqjqc3s";
"1.0".sha256 = "1qmbxp1h81cy3imh627pznmng0kvv37k4hrwi2faa101s6bcx55m";
};
useDuneifVersion = lib.versions.range "1.5.3" "2.2.0";
preConfigure = ''
patchShebangs configure || true
'';
propagatedBuildInputs = [
mathcomp.boot
mathcomp.algebra
mathcomp-finmap
mathcomp.fingroup
mathcomp-bigenough
];
meta = {
description = "Coq/SSReflect Library for Monoidal Rings and Multinomials";
license = lib.licenses.cecill-c;
};
}
// lib.optionalAttrs (args ? useDune) { inherit useDune; }

View File

@@ -0,0 +1,49 @@
{
lib,
mkCoqDerivation,
mathcomp,
version ? null,
}:
mkCoqDerivation {
pname = "odd-order";
owner = "math-comp";
release."2.2.0".sha256 = "sha256-z0C7+wtY8NpoT8wYqHiy8mB2HPYAeJndzDmf7Bb0mg8=";
release."2.1.0".sha256 = "sha256-TPlaQbO0yXEpUgy3rlCx/w1MSLECJk5tdU26fAGe48Q=";
release."1.14.0".sha256 = "0iln70npkvixqyz469l6nry545a15jlaix532i1l7pzfkqqn6v68";
release."1.13.0".sha256 = "sha256-EzNKR/JzM8T17sMhPhgZNs14e50X4dY3OwFi133IsT0=";
release."1.12.0".sha256 = "sha256-omsfdc294CxKAHNMMeqJCcVimvyRCHgxcQ4NJOWSfNM=";
releaseRev = v: "mathcomp-odd-order.${v}";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch mathcomp.character.version [
(case (range "2.2.0" "2.4.0") "2.2.0")
(case (range "2.1.0" "2.3.0") "2.1.0")
(case (range "1.13.0" "1.15.0") "1.14.0")
(case (range "1.12.0" "1.14.0") "1.13.0")
(case (range "1.10.0" "1.12.0") "1.12.0")
] null;
propagatedBuildInputs = [
mathcomp.character
mathcomp.boot
mathcomp.fingroup
mathcomp.algebra
mathcomp.solvable
mathcomp.field
mathcomp.all
];
meta = with lib; {
description = "Formal proof of the Odd Order Theorem";
maintainers = with maintainers; [ siraben ];
license = licenses.cecill-b;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
mkCoqDerivation,
coq,
stdlib,
version ? null,
}:
mkCoqDerivation {
pname = "paco";
owner = "snu-sf";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.coq-version [
(case (range "8.14" "9.1") "4.2.3")
(case (isEq "8.13") "4.2.2")
(case (range "8.12" "8.17") "4.1.2")
(case (range "8.9" "8.13") "4.1.1")
(case (range "8.6" "8.13") "4.0.2")
(case (isEq "8.5") "1.2.8")
] null;
release."4.2.3".sha256 = "sha256-ldUjNd5daUu2B3v4tk20/iXFgyUuW4XHlbubTInpwcs=";
release."4.2.2".sha256 = "sha256-qr6o45Q90FK+kkBUJ+W7QhiA0YQRb1RUwwXUpTTFt8A=";
release."4.2.0".sha256 = "sha256-YHYtiz9hium96n3owL/C99AjJAFTlTCmmb2+ttevgMY=";
release."4.1.2".sha256 = "sha256:1l8mwakqp4wnppsldl8wp2j24h1jvadnvrsgf35xnvdyygypjp2v";
release."4.1.1".sha256 = "1qap8cyv649lr1s11r7h5jzdjd4hsna8kph15qy5fw24h5nx6byy";
release."4.0.2".sha256 = "1q96bsxclqx84xn5vkid501jkwlc1p6fhb8szrlrp82zglj58b0b";
release."1.2.8".sha256 = "05fskx5x1qgaf9qv626m38y5izichzzqc7g2rglzrkygbskrrwsb";
releaseRev = v: "v${v}";
propagatedBuildInputs = [ stdlib ];
preBuild = "cd src";
installPhase = ''
COQLIB=$out/lib/coq/${coq.coq-version}/
mkdir -p $COQLIB/user-contrib/Paco
cp -pR *.vo $COQLIB/user-contrib/Paco
'';
meta = {
homepage = "https://plv.mpi-sws.org/paco/";
description = "Coq library implementing parameterized coinduction";
maintainers = with lib.maintainers; [
jwiegley
ptival
];
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
mkCoqDerivation {
pname = "paramcoq";
inherit version;
defaultVersion =
with lib.versions;
lib.switch coq.version [
{
case = range "8.10" "8.20";
out = "1.1.3+coq${coq.coq-version}";
}
{
case = range "8.7" "8.13";
out = "1.1.2+coq${coq.coq-version}";
}
] null;
displayVersion = {
paramcoq = "...";
};
release."1.1.3+coq8.20".sha256 = "sha256-34xDOz/2xO39fnQW6Zb9CI2EKFuJZjrAdOpMEmwuzY0=";
release."1.1.3+coq8.19".sha256 = "sha256-5NVsdLXaoz6qrr5ra5YfoHeuK4pEf8JX/X9+SZA0U+U=";
release."1.1.3+coq8.18".sha256 = "sha256-hNBaj9hB+OzwXsOX+TOXtDLjA5oP4EmEgseLwxFxW+I=";
release."1.1.3+coq8.17".sha256 = "sha256-m8QGGuwj1lHzDprf4LHgAuzwfoblxtDIHunHBdpmiuM=";
release."1.1.3+coq8.16".sha256 = "sha256-K7/8hXH6DwiW7Gw41sgQF8UDAO3c32xBGWQQapzG8Mo=";
release."1.1.3+coq8.15".sha256 = "0sl7ihznwz05d2x2v78w1zd4q55c1sgy06vxasbcls4v2pkw53hl";
release."1.1.3+coq8.14".sha256 = "00zqq9dc2p5v0ib1jgizl25xkwxrs9mrlylvy0zvb96dpridjc71";
release."1.1.3+coq8.13".sha256 = "06ndly736k4pmdn4baqa7fblp6lx7a9pxm9gvz1vzd6ic51825wp";
release."1.1.3+coq8.12".sha256 = "sha256:10j23ws8ymqpxhapni75sxbzz0dl4n9sgasrx618i7s7b705y2rh";
release."1.1.3+coq8.11".sha256 = "sha256:1wbvcmkr7q106418bvvc2rj2d7s03wdhhxar0hicy1rr267w2bs6";
release."1.1.3+coq8.10".sha256 = "sha256:0kv3k3y2fck1qz83pqmihyh98swicnpx0n6fzkis1n2g39qjfz91";
release."1.1.2+coq8.13".sha256 = "02vnf8p04ynf3qk8myvjzsbga15395235mpdpj54pvxis3h5qq22";
release."1.1.2+coq8.12".sha256 = "0qd72r45if4h7c256qdfiimv75zyrs0w0xqij3m866jxaq591v4i";
release."1.1.2+coq8.11".sha256 = "09c6813988nvq4fpa45s33k70plnhxsblhm7cxxkg0i37mhvigsa";
release."1.1.2+coq8.10".sha256 = "1lq1mw15w4yky79qg3rm0mpzqi2ir51b6ak04ismrdr7ixky49y8";
release."1.1.2+coq8.9".sha256 = "1jjzgpff09xjn9kgp7w69r096jkj0x2ksng3pawrmhmn7clwivbk";
release."1.1.2+coq8.8".sha256 = "0rc4lshqvnfdsph98gnscvpmlirs9wx91qcvffggg73xw0p1g9s0";
release."1.1.2+coq8.7".sha256 = "09n0ky7ldb24by7yf5j3hv410h85x50ksilf7qacl7xglj4gy5hj";
releaseRev = v: "v${v}";
mlPlugin = true;
meta = with lib; {
description = "Coq plugin for parametricity";
license = licenses.mit;
maintainers = [ maintainers.vbgl ];
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
mkCoqDerivation,
coq,
ceres,
ExtLib,
version ? null,
}:
mkCoqDerivation {
pname = "parsec";
repo = "coq-parsec";
owner = "liyishuai";
propagatedBuildInputs = [
ceres
ExtLib
];
releaseRev = (v: "v${v}");
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with lib.versions;
lib.switch coq.version [
(case (range "8.14" "9.1") "0.2.0")
(case (range "8.14" "8.20") "0.1.2")
(case (range "8.12" "8.16") "0.1.1")
(case (range "8.12" "8.13") "0.1.0")
] null;
release."0.2.0".sha256 = "sha256-hM6LVFQ2VQ42QeHu8Ex+oz1VvJUr+g8/nZN+bYHEljQ=";
release."0.1.2".sha256 = "sha256-QN0h1CsX86DQBDsluXLtNUvMh3r60/0iDSbYam67AhA=";
release."0.1.1".sha256 = "sha256:1c0l18s68pzd4c8i3jimh2yz0pqm4g38pca4bm7fr18r8xmqf189";
release."0.1.0".sha256 = "sha256:01avfcqirz2b9wjzi9iywbhz9szybpnnj3672dgkfsimyg9jgnsr";
useDuneifVersion = v: lib.versions.isGe "0.2.0" v || v == "dev";
meta = with lib; {
description = "Library for serialization to S-expressions";
license = licenses.bsd3;
maintainers = with maintainers; [ Zimmi48 ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
mkCoqDerivation,
coq,
version ? null,
}:
with lib;
let
derivation = mkCoqDerivation {
pname = "parseque";
repo = "parseque";
owner = "rocq-community";
inherit version;
defaultVersion =
let
case = case: out: { inherit case out; };
in
with versions;
switch coq.coq-version [
(case (range "8.16" "8.20") "0.2.2")
] null;
release."0.2.2".sha256 = "sha256-O50Rs7Yf1H4wgwb7ltRxW+7IF0b04zpfs+mR83rxT+E=";
releaseRev = v: "v${v}";
meta = {
description = "Total parser combinators in Coq/Rocq";
maintainers = with maintainers; [ womeier ];
license = licenses.mit;
};
};
in
# this is just a wrapper for rocqPackages.parseque for Rocq >= 9.0
if coq.rocqPackages ? parseque then
coq.rocqPackages.parseque.override {
inherit version;
inherit (coq.rocqPackages) rocq-core;
}
else
derivation

Some files were not shown because too many files have changed in this diff Show More