Comments (5)
You're right, these proofs should definitely be improved. One way would be to make the tactic t
better/more general, but probably it would be better to define MinimalMMIO
in terms of Minimal
, and MetrictMinimalMMIO
in terms of MinimalMMIO
, and then each additional layer would only have to prove what it adds instead of the whole thing. I tried to do that about 2 times already and gave up each time because I ran out of the time I had allocated for that, and after all, it works as it is, and the ugliness is hidden behind a reasonable interface (riscv.Spec.Primitives
).
But if you find a way to improve this, that'd be more than welcome!
from riscv-coq.
While adding a parametrizable ext_spec
to the instances, I also made some improvements regarding this issue:
- In 1175fb1, I changed the instance proof of
MinimalMMIO
to do less unfolding and use more helper lemmas instead. - In 674cff5, I reused instance proofs from
MinimalMMIO
for the instance proof ofMetricMinimalMMIO
.
from riscv-coq.
Thanks. MetricMinimalMMIO
still takes about 45s to compile for me, but I think it’s faster now (didn’t measure it earlier).
from riscv-coq.
On Coq's CI, which runs with timing enabled, it went down from 829 seconds to 71 seconds. Feel free to suggest a PR which improves it further 😉
from riscv-coq.
Just wow!
I had a look at it using the profiler and didn’t find a (simple) opportunity to optimize it further.
from riscv-coq.
Related Issues (11)
- non-vectored interrupts? HOT 2
- Add restrictions to `RiscvMachine` HOT 7
- Ideas about implementing multiple harts HOT 1
- Add documentation HOT 2
- Formalising the privileged specification
- CI fails on master HOT 1
- Please pick the version you prefer for Coq 8.17 in Coq Platform 2023.03 HOT 2
- Please pick the version you prefer for Coq 8.18 in Coq Platform 2023.10 HOT 3
- Please create a tag for Coq 8.19 in Coq Platform 2024.01
- [coq-platform] Smoke test broken HOT 3
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 riscv-coq.