A blog engine written and proven in Coq
coq-blog.clarus.me
A blog engine written and proven in Coq
1–10 of 60 posts
Re: A blog engine written and proven in Coq
#2How does Coq ensure that the request completes in finite time?
Re: A blog engine written and proven in Coq
#3> The purity of Coq ensures that each request is answered exactly once in finite time. How does Coq ensure that the request completes in finite time?
Re: A blog engine written and proven in Coq
#4Re: A blog engine written and proven in Coq
#5> an unauthenticated user cannot access private pages (like edit) or modify the file system with system calls.
System calls? How do they come into the picture? And wouldn't reasoning about system calls require proofs about the kernel itself?
Re: A blog engine written and proven in Coq
#6The last line threw me off: > an unauthenticated user cannot access private pages (like edit) or modify the file system with system calls. System calls? How do they come into the picture? And wouldn't reasoning about system calls require proofs about the kernel itself?
Of course, in theory there might be some kernel bug such that e.g. a read() sometimes changes files on disk, but I guess this is outside the scope of that proof system. Only the blog program itself was proven, assuming that the remaining system software as well as hardware are working in a sane way.
If you want your proofs to include the whole operating system, you'd first have to reduce the kernel to a minimal operating system (e.g. MirageOS). If have lots of time, money and motivation, you could continue to include the possibly used virtualization layer (XEN, QEMU/KVM, whatever) and finally the hardware design.
Re: A blog engine written and proven in Coq
#7> The purity of Coq ensures that each request is answered exactly once in finite time. How does Coq ensure that the request completes in finite time?
Re: A blog engine written and proven in Coq
#8The last line threw me off: > an unauthenticated user cannot access private pages (like edit) or modify the file system with system calls. System calls? How do they come into the picture? And wouldn't reasoning about system calls require proofs about the kernel itself?
Re: A blog engine written and proven in Coq
#9Re: A blog engine written and proven in Coq
#10> The purity of Coq ensures that each request is answered exactly once in finite time. How does Coq ensure that the request completes in finite time?
At a guess it demonstrates that there's no possibility for infinite loops or recursion. It's going to rely on a model of the storage mechanism (memory, disk, whatever) that will respond to requests for data in finite time, but that doesn't seem an unreasonable assumption to make in this case. You have to draw the lines around your proof system somewhere or else you're going to end up having to model the entire world.
Not that I don't agree with you but I find it a common failure mode of HDs to just never reply to things. I guess it's also a common failure mode of network systems too.
Can Coq detect that you are enforcing I/O timeouts in a way that guarantees finite time?