[mercury-users] cc_multi vs det

Tyson Dowd trd at cs.mu.OZ.AU
Fri Dec 1 10:07:09 AEDT 2000

On 30-Nov-2000, Peter Ross <peter.ross at miscrit.be> wrote:
> On Thu, Nov 30, 2000 at 04:08:25PM +1100, Mark Anthony BROWN wrote:
> > 
> > Because there may have been more than one potential exception, and
> > the Mercury implementation may have (operationally) chosen one of
> > them.  In code that handles exceptions, it is possible that different
> > exceptions lead to different solutions, so the Mercury implementation
> > may effectively be making a choice between two different solutions in
> > the higher level predicate.  This is (declaratively) modelled using
> > committed choice nondeterminism.
> > 
> I understand the declarative differences between cc_multi vs det.
> However I am not sure what effect these declarative differences have on
> the generated code.  Could someone give me an example of when the
> distinction between cc_multi and det is important when the code is
> generated (ie where having det instead of cc_multi leads to incorrect
> code).

The generated code is exactly the same.

>From code_model.m in the compiler source:

determinism_to_code_model(det,         model_det).
determinism_to_code_model(semidet,     model_semi).
determinism_to_code_model(nondet,      model_non).
determinism_to_code_model(multidet,    model_non).
determinism_to_code_model(cc_nondet,   model_semi).
determinism_to_code_model(cc_multidet, model_det).
determinism_to_code_model(erroneous,   model_det).
determinism_to_code_model(failure,     model_semi).

cc_multi is the same code model as det.
cc_nondet is the same code model as semidet.

The correctness of the solutions will be the same, but there is a
difference between a program which has `main' as det or cc_multi.  A
cc_multi program might behave differently (compute different solutions,
and produce different IO as a result) even given the exact same starting
conditions.  A det program will not.

       Tyson Dowd           # 
                            #  Surreal humour isn't everyone's cup of fur.
     trd at cs.mu.oz.au        # 
http://www.cs.mu.oz.au/~trd #
mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list