assert semantic change proposal
via Digitalmars-d
digitalmars-d at puremagic.com
Wed Aug 6 23:32:17 PDT 2014
On Thursday, 7 August 2014 at 05:41:22 UTC, Matthias Bentrup
wrote:
> If assume is independent of control flow, then clearly this
> cannot be related to assert.
Well, both assume and assert are "independent" of control flow
since you don't have execution or control flow in mathematics.
The dependency is tied to the "renaming of variables into
constants" which allows Hoare-Logic to work on variables, not
only constants. However, for proper constants, you don't need
that limit for neither assert nor assume?
if(B){
assume(B && PI==3.14)
} else {
assume(!B && PI==3.14) // must hold here too since it is a
constant
}
apply hoare logic rule for if:
if this holds:
{B ∧ P} S {Q} , {¬B ∧ P } T {Q}
then this holds:
{P} if B then S else T endif {Q}
which gives:
assume(PI==3.14)
f(B){
assume(PI==3.14)
} else {
assume(PI==3.14)
}
assume(PI==3.14)
(Usually you only have assume at the top in the preconditions,
since you otherwise don't get a proof :-).
More information about the Digitalmars-d
mailing list