On Wed, Mar 11, 2009 at 4:25 PM, Jonathan S. Shapiro <[email protected]> wrote:
> On Wed, Mar 11, 2009 at 11:23 AM, Geoffrey Irving <[email protected]> wrote:
>> Uninitialized allocation is perfectly safe as long as you don't mind
>> errors resulting in nondeterministic (but still safe) behavior.
>
> You mean "undefined", not "nondeterministic". And unfortunately, we
> *do* mind. Since we want to be able to embed BitC in a prover,
> undefined behavior is double plus ungood.

Having a constructor that produces undefined memory is equivalent to
having a function of the form

    undefined-vector : int -> '_a vector

where the prover knows that

1. The resulting vector has the appropriate size.
2. Each slot contains a valid integer.
3. undefined-vector has a "nondeterminism" effect bit, which just
means that you can't apply CSE.

Why does that break a prover?  Do random number generators also break provers?

Geoffrey
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to