On Wednesday, 6 August 2014 at 17:03:45 UTC, Ola Fosheim Grøstad wrote:
On Wednesday, 6 August 2014 at 16:59:18 UTC, Artur Skawina wrote:
No, an assume(false) in a program only means that every _path_
_leading_to_that_statement is 'unsound'. For practical purposes
it's better to treat 'unsound' as impossible and unreachable.

I don't think so. Because a program is only correct if all axioms and proposed theorems are proven true.

All axioms are by definition true, so if you assume(false==true) anywhere it has to hold everywhere. Neither "false" or "true" are variables.

Just like assume(PI==3.14…) has to hold everywhere. false, true and PI are constant throughout every path in the program.

Not really sure how it is possible to disagree with that?

The crux is the axiom that is being defined. When you write `assume(condition)`, the axiom is not:

    "`condition` is true."

but:

"When control flow reaches this point, then `condition` is true."

It's not an unconditionally true condition :-P

Reply via email to