2024-04-19 11:37 AEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000285mercuryBugpublic2013-06-28 15:54
Reporterpbone 
Assigned To 
PrioritynormalSeveritytweakReproducibilityhave not tried
StatusnewResolutionopen 
Product Version 
Target VersionFixed in Version 
Summary0000285: Mode error is misleading
DescriptionA mode error can be causes when code is multidet when it is declared as det. In these case the error text uses the phrase "multiple clauses with solutions". Even for single clause predicates.
Steps To ReproduceCreate a single clause predicate declared as det such as:

update_atom_in_map(Atom, SubstsA, Status, OrigHt, !Map) :-
    (
        ( map.search(!.Map, Atom, EntryPrime) ->
            Entry = EntryPrime
        ; version_hash_table.search(OrigHt, Atom, EntryPrime) ->
            Entry = EntryPrime
        ;
            false
        ), # HERE is the error, this should be a -> rather than a ,
        Entry = memo_table_entry(SubstsB, _),
        Substs = SubstsA `union` SubstsB
    ;
        Substs = SubstsA
    ),
    set(Atom, memo_table_entry(Substs, Status), !Map).
TagsNo tags attached.
Attached Files

-Relationships
+Relationships

-Notes

~0000525

juliensf (administrator)

The only such error message I can find is:

     "Disjunction has multiple clauses with solutions."

That seems fairly unambiguous for the example above.

~0000547

pbone (administrator)

I don't like the confusion with clauses. Could it say something like "Disjunction has multiple parts with solutions?"

~0000549

juliensf (administrator)

"clause" is a standard term in predicate logic for describing the "parts" of a disjunction. As I said in my original reply, I don't see that the error message has any ambiguity anyway.
+Notes

-Issue History
Date Modified Username Field Change
2013-05-22 11:24 pbone New Issue
2013-05-22 13:15 juliensf Note Added: 0000525
2013-06-28 15:36 pbone Note Added: 0000547
2013-06-28 15:54 juliensf Note Added: 0000549
+Issue History