conjure-cp / conjure

Conjure: The Automated Constraint Modelling Tool
Other
94 stars 20 forks source link

Discrepency in monoids constraint on Semigroups, Monoids and Groups tutorial #607

Closed N-J-Martin closed 9 months ago

N-J-Martin commented 9 months ago

I have been updating the Semigroups, Monoids and Groups google notebook tutorial, here, to use the latest conjure version (Version 9) as described by Issue #597 . However I noticed that when describing monoids, it says there has to be some element of the semigroup, e, that acts as an identity such that for all integers i and a function R,
R(i,e) = R(e,i) = e.

However what the example code shows is: R((e,i)) = i /\ R((i,e)) = i.

Here, the e in the described constraint is replaced by i in the constraint actually used. They seem to be saying two different things. This discrepancy is also present in the original tutorial here.

As you wrote the original tutorial @ChrisJefferson (I can't seem to tag Alice Lynch) I was wondering if you could confirm the intention here?

Thank you!

ChrisJefferson commented 9 months ago

Hi, the code is correct (I believe, on phone so I am assuming we are quantifying over i).

An example of a monoid is integers (except zero) under multiplication, where 1 is the identity. Another common example is string concatenation, where the identity is empty string (just to hopefully give some understanding!)

Get Outlook for iOShttps://aka.ms/o0ukef


From: N-J-Martin @.> Sent: Friday, November 10, 2023 1:18:49 AM To: conjure-cp/conjure @.> Cc: Christopher Jefferson @.>; Mention @.> Subject: {Disarmed} [conjure-cp/conjure] Discrepency in monoids constraint on Semigroups, Monoids and Groups tutorial (Issue #607)

I have been updating the Semigroups, Monoids and Groups google notebook tutorial, herehttps://github.com/conjure-cp/conjure/blob/main/docs/tutorials/notebooks/Semigroups%2C_Monoids_and_Groups.ipynb, to use the latest conjure version (Version 9) as described by Issue #597https://github.com/conjure-cp/conjure/issues/597 . However I noticed that when describing monoids, it says there has to be some element of the semigroup, e, that acts as an identity such that for all integers i and a function R, R(i,e) = R(e,i) = e.

However what the example code shows is: R((e,i)) = i /\ R((i,e)) = i.

Here, the e in the described constraint is replaced by i in the constraint actually used. They seem to be saying two different things. This discrepancy is also present in the original tutorial herehttps://conjure.readthedocs.io/en/latest/tutorials/Groups.html.

As you wrote the original tutorial @ChrisJeffersonhttps://github.com/ChrisJefferson (I can't seem to tag Alice Lynch) I was wondering if you could confirm the intention here?

Thank you!

— Reply to this email directly, view it on GitHubhttps://github.com/conjure-cp/conjure/issues/607, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAGGEB6DQWSLR7LUHYIMIJDYDUF7TAVCNFSM6AAAAAA7E5KEJGVHI2DSMVQWIX3LMV43ASLTON2WKOZRHE4DMMBXHA3TGOI. You are receiving this because you were mentioned.Message ID: @.***>

[ { @.": "http://schema.org", @.": "EmailMessage", "potentialAction": { @.": "ViewAction", "target": "https://github.com/conjure-cp/conjure/issues/607", "url": "https://github.com/conjure-cp/conjure/issues/607", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { @.": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

N-J-Martin commented 9 months ago

Thank you! That make a lot more sense now and helps a lot!