checkedint call removal

Chris Cain via Digitalmars-d digitalmars-d at puremagic.com
Fri Aug 1 21:46:42 PDT 2014


On Saturday, 2 August 2014 at 04:28:33 UTC, Timon Gehr wrote:
> On 08/02/2014 06:11 AM, Chris Cain wrote:
>> On Saturday, 2 August 2014 at 03:40:47 UTC, Timon Gehr wrote:
>>> I already googled 'statement of fact' myself earlier, and 
>>> found the
>>> wikipedia entry for 'fact', that I quoted back then:
>>> http://en.wikipedia.org/wiki/Fact
>>>
>>> "The usual test for a statement of fact is verifiability, 
>>> that is,
>>> whether it can be demonstrated to correspond to experience."
>>>
>>> I.e. in order to determine whether something is a statement 
>>> of fact,
>>> one should verify it. Do you agree that it is saying this?
>>
>> I'll just do this real quick, because it's a really easy one 
>> to show the
>> problem with.
>>
>> Google "verifiable" ->
>> http://www.merriam-webster.com/dictionary/verifiable -> 
>> "capable of
>> being verified"
>>...
>
> Great, now we are getting somewhere.
>
> http://dictionary.reference.com/browse/verify?s=t
>
> "to prove the truth of, as by evidence or testimony; confirm; 
> substantiate: Events verified his prediction."
>
> I understand "capable of being verified" as "there is a way to 
> verify this" which is the same as "this can be proven" which 
> would imply "this is true".
>
> What's wrong here?

The fact that you assume that something "can be proven" means it 
"has been proven" or "must be proven". Because you don't 
necessarily have to prove it, it doesn't necessarily mean it is 
true. It's a statement that you are suggesting is true but 
*could* be falsified/shown to be false/verified/verified to be 
false.

The mere fact that asserts take in expressions show that 
something "can be proven", but there is no implication that it, 
therefore, must be proven. If you put an expression in an assert 
and it successfully compiles, you've made a statement of fact. 
It's useful that it is checked/proven in debug builds but not 
surprising that it's required to by definition.

>
>> That is, it's something that has some ability to be verified. 
>> Thus, 1==2
>> is "verifiable" (it can be shown to be either true or false).
>> ...
>
> If I can verify 1==2, I would prove 1==2, as per the definition 
> above, no?

No. You can verify it but find it to be false. Your proof would 
show it to be false. The fact that you can write a proof showing 
it to be false is a proof that it was verifiable in the first 
place.

> It is possible that this is indeed what it tries to 
> communicate. Thanks for bearing with me in any case!

No problem. :)

> But as I wrote in my previous post, now this brings up the 
> issue that if an assertion is a statement of fact, then it is 
> not necessarily true.
>
> Why is it now obvious that it should be considered true?

For the same reason that all of the other things you type into a 
program is accepted by a program.

`if(...)` ... would it be strange if your program doubted that 
you really want to execute the block the if statement refers to? 
Of course it would.

Basically, you're a god and what you say to do is law in computer 
programming. By default you expect the computer to not doubt you 
and to follow what you say. It's not like a person who will 
question your assertions and ask you to prove them or double 
check them for you.

Though, the fact that it will double check them for you is 
helpful in debug builds, so it's an obvious enhancement for 
debugging purposes.

Since assert is you making a statement of fact, it's logical that 
it should, by default, accept what you say just like it accepts 
every other command you give it.

If you're wrong... well, it's just like if you're wrong about 
your if statements or if you call the wrong function or pass in 
the wrong variables. You'll get incorrect program behavior. 
Unlike those other things, since it's verifiable, there exists 
some sort of configurations where the program can be helpful to 
you by verifying your assertions.


More information about the Digitalmars-d mailing list