Software Assurance Reference Dataset

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Thu Jun 26 17:09:34 PDT 2014


On Thu, Jun 26, 2014 at 04:43:33PM -0700, Andrei Alexandrescu via Digitalmars-d wrote:
> On 6/26/14, 2:01 PM, Araq wrote:
> >>
> >>Spark is a research language that does not work, as I've discovered
> >>and discussed with you before. It cannot be determined the max stack
> >>usage at compile time, again, this is the halting problem.
> >>
> >
> >What?! It's easily solvable: Forbid recursion and indirect
> >function calls
> 
> I do agree that a useful subset of a language can be conservatively
> defined that doesn't require solving the halting problem. But that's
> not easy at all - it requires interprocedural analysis.
[...]

And it may not be feasible for a compiler to automatically prove.

One possible approach is to have the user supply the proof of eventual
termination, which can be mechanically verified by the compiler.
(Checking a supplied proof for correctness is more tractable than coming
up with the proof in the first place.) But to handle proofs of
non-trivial code beyond just toy examples, you might end up needing a
full-scale deductive proof subsystem in the compiler, which may or may
not be practical for D's needs!


T

-- 
That's not a bug; that's a feature!


More information about the Digitalmars-d mailing list