-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Repository structure #25
Comments
In complement, I have been thinking about the proposal of a Wiki by Andrej which is a good idea. However, it seems we are facing the usual issue when describing a graph: do we do it by the edges or by the vertices. Right now, it is by the vertices but I suggest that we move to both. What I mean is that ideally, we would have a real graph with hyperlinks:
I am not sure how to implement such a interface. Could we put in place a database? What do you think ? |
Concerning the code organisation: In my opinion, the main goal of such a refactoring is to increase reusability of parts. So collecting all problems, definitions etc. related to PCP in the "PCP" folder seams very reasonable. But where to put reductions between two problems, for example 'DIO_SINGLE_SAT ⪯ MUREC_HALTING'? Except that, I agree with Yannicks proposed changes. |
Regarding Change 1: MetaCoq is now following Coq All dependency management is done via opam and there is no I thus propose the following new structure of branches:
I'm aware this is yet again another change of the branch structure, but my hope is that this makes it easiest to update the library to new Coq versions in the future. @DmxLarchey @mrhaandi What do you think? |
Regarding Change 2, Andrej started working on bringing some of the most important problems into this shape, which I think is great.
I am not sure either. For the short term the most reasonable goal is to have a wiki describing both edges and vertices. If we can get something graphical allowing the user to click and then end up on the right page of the wiki that would be great, but a wiki would already be a first step. (I'm aware that for many problems I myself should start writing wiki pages, it's on my TODO list for a long time already but didn't move much since then) I found that discussing issues like this sometimes is quicker in a Skype/Zoom meeting, which I've been using a lot with Andrej and Fabian to get the porting done. Maybe it makes sense to schedule a Zoom undecidability library meeting, just to sync and discuss what's up next? Even if it's just 15 minutes, it might be more efficient than GitHub issues |
|
Yep and maybe you could add Dominik as well ? |
After a cleanup of |
These are the directories which do not follow the structure guidelines at the moment:
That's not so bad! :) I don't think we have to fix this for the 1.0.0 release, but it's good to keep track. |
After discussion with Andrej, here's a proposal how to structure the repository in the future in order to be most easily to maintain. Please add your thoughts from a user perspective (@DmxLarchey, @dominik-kirst, @fakusb).
Change 1: There will only be one branch. A
configure.sh
script can be used to locally set up the repository for either a minimal use (no opam, no external libraries) or a full use. This is done by shipping a_CoqProject.minimal
file and a_CoqProject.full
file. In the minimal case, the first file is used, in the full case, both files are appended by the configure script.Change 2: We move to a "one directory per problem class" structure. I.e. the structure will look as follows:
PCP
PCP.v
containing the definition ofPCP
, FilePCP_undec.v
containing a statementPCP_undec : Halt <= PCP
.BPCP.v
containing the definition ofBPCP
, FileBPCP_undec.v
containing a statementBPCP_undec : Halt <= BPCP
.PCP
The current
Problems
directory goes away, so does theReductions
directory. TheShared
directory stays as is.Using this setup, it should be relatively easy to write
Makefile
targets such that one can domake PCP
and only get the PCP directory (and all recursive dependencies) compiled, reducing compile time for users that only want to use part of the library.This way, if a user wants to import a problem, they have to do
Require Import ProblemClass.Problem
, e.g.PCP.MPCP
orRewriting.SR
. If they want to import the full reduction to this problem, it'sRequire Import ProblemClass.Problem_undec
.The text was updated successfully, but these errors were encountered: