Comments (11)
I agree that repeating the directory name in each file name is redundant. The current directory structure outside Spec
has not received much thought. Perhaps better names would be Curves/Edwards/Affine.v
and Curves/Edwards/Extended.v
-- "Theorems" isn't particularly informative in a Coq development either. Generalizing from this a little bit, I think we should mirror EFD's shape/coordinates/formula
structure for elliptic curves because (1) the properties we verify mostly match the properties they verify (2) I don't see a problem with EFD's directory structure.
It's still unclear how expressive a name should be: CompleteTwistedEdwards
vs CompleteEdwards
vs TwistedEdwards
vs Edwards
-- for some reason i included the completeness requirement in the name but omitted the specific curve shape. Including both seems like a slippery slope...
from fiat-crypto.
I think we should do a cleanup/rename pass on the repository, perhaps the next time I feel like doing low-brain work. Here is what I propose:
- Keep
Spec/
as-is because it is fine - Remove
BaseSystem
andModularBaseSystem
and their users - Remove
Assembly
and all of its users - Remove
Spec/Encoding
- Remove
PointEncoding
- See whether we still use
VerdiTactics
, remove it unless we use it heavily - I wouldn't touch
Reflection
because I don't understand it well enough - Consolidate elliptic curve files to paths like
Curves/Weierstrass/Projective.v
,Curves/Edwards/Twisted
. Spec still stays in spec. - Remove most of
Specific
, only keep FancyMachine stuff? - Remove
SpecificGen
- Create a new directory for "BaseSystem" kind of stuff, perhaps "Arithmetic"?
- Remove
coqprime-8.4
? I can't remember the project built on 8.4, so meh, we probably are not going to fix it.
from fiat-crypto.
++
- IIRC,
break_if
requiresVerdiTactics
, and is used in many places. Specific
containsNewBaseSystemTest
, which I'm using. I'd like that to remain (although moving it is fine).- extra ++, I would also like to talk about how to organize the stuff in there so that people other than me understand it.
from fiat-crypto.
re 6. There's very similar code in Crypto.Util.Tactics.BreakMatch
; we should use that instead, or figure out if there's missing functionality
re 7. I'd like to fix that. We should rename SmartMap
to something better without Smart
, and remove the outdated versions of wordsize selection, at the very least.
re 9. I don't want to remove the reflective stuff in there (or any of its dependencies) until we finish have a working Pipeline file that we can use to reify the various operations. But we can deprecate the directory or something.
re 12. Yes, let's get rid of 8.4 support, so we can start using some of the nicer features of 8.5, like simple refine
(which allows transparent assert
) and dependent subgoals.
from fiat-crypto.
re 7: I also want to do that, but would rather do it separately from simple rename tasks.
re 9: hmm. All of that depends on old BaseSystem I think. So maybe we wait until new basesystem integration even somewhat happens.
from fiat-crypto.
- Remove most of extraction-related stuff, perhaps consolidate the reusable parts into a Util file.
from fiat-crypto.
- Remove most of
Util.FixedWordSizes
, which is only needed if we want separate extraction constants forword32
,word64
, etc.
from fiat-crypto.
- Default to removing all experiments, unless we want to keep some.
from fiat-crypto.
What should we do about BoundedArithmetic and stuff that uses it (e g Specific FancyMachine code)? I didn't realize it depends on old BaseSystem... Do we think there is a significant chance we will resume working on that strategy? I think if we don't plan to work on it, we should remove all FancyMachine stuff from master
, and if we ever end up needing it, we can dig it up from git history.
from fiat-crypto.
This is happening.
from fiat-crypto.
I ended up not doing 14.
from fiat-crypto.
Related Issues (20)
- src/Bedrock/Field/Common/Util.v broken HOT 3
- Rust: `no_std` is broken due to use of `std::ops`
- Using word_by_word_montgomery with one-word prime modulus HOT 1
- Consider to replace Stdlib by Prevasives HOT 1
- Please create a tag for Coq 8.18 in Coq Platform 2023.10 HOT 10
- standalone-javascript with js_of_ocaml?
- Generate single binary for all synthesis
- Upload universal binaries for MacOS HOT 2
- Test install target on CI
- README should link to latest standalone binaries on release page
- Avoid running out of stack in js_of_ocaml code
- Installation problems on Arch Linux: Package `coq-core.plugins.ltac' not found HOT 5
- Mask most significant bit in from_bytes HOT 2
- Change fiat_25519_opp to return a tight? HOT 1
- Please create a tag for Coq 8.19 in Coq Platform 2024.01 HOT 15
- Slow BarrettReduction?
- Sign & noatarize MacOS binaries?
- Use the same docker image in validate and build docker jobs on master
- Better handling of .map files in js_of_ocaml, wasm_of_ocaml
- zig build fails with no field named 'path' in union 'Build.LazyPath'
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fiat-crypto.