Processus CCS pour un distributeur de boissons avec deux prix différents

11

Un distributeur de boissons oblige l'utilisateur à insérer une pièce de monnaie ( ), puis appuyez sur l'un des trois boutons: ˉ d tea demande une tasse de thé e tea , idem pour le café, et ˉ r demande un remboursement (c'est-à-dire que la machine rend le pièce: ˉ b ). Ce distributeur peut être modélisé par le processus CCS suivant :c¯¯théethér¯b¯

M=defc.(dtea.e¯tea.M+dcoffee.e¯coffee.M+r.b¯.M)

Une guerre civile fait monter le prix du café à deux pièces, tandis que le prix du thé reste une pièce. Nous voulons une machine modifiée qui ne livre du café qu'après deux pièces et accepte un remboursement après une ou deux pièces. Comment modéliser la machine modifiée avec un processus CCS?

Gilles 'SO- arrête d'être méchant'
la source
1
Qu'est-ce qu'un modèle / processus CCS? Sont-ils équivalents aux systèmes de transition étiquetés (LTS)?
Raphael
1
@Raphael CCS est un calcul de processus, un précurseur du calcul pi. Un modèle CCS n'est qu'un modèle dans CCS. J'ai ajouté un lien Wikipédia et un wiki de balises.
Gilles 'SO- arrête d'être méchant'
Je pense que la logique et les langages de programmation sont appropriés pour cette question. Les algèbres de processus sont étudiées dans ces domaines, et pour cette question, la logique semble plus appropriée, par exemple, veuillez vérifier les balises de zone ici .
Kaveh

Réponses:

9

Vous pouvez facilement profiter de la guerre de cette façon:

M=defc.(dtea.e¯tea.M+r.b¯.M+c.(dcoffee.e¯coffee.M+r.b¯.b¯.M))

notez que vous devez appuyer sur le remboursement pour obtenir un thé si vous mettez trop de pièces. Si vous ne le souhaitez pas, vous pouvez l'adapter (ou peut-être mettre en place un compteur (fini est suffisant)):

M=defc.(dtea.e¯tea.M+r.b¯.M+c.(dcoffee.e¯coffee.M+dtea.b¯.e¯tea.M+r.b¯.b¯.M))
jmad
la source
Je ne comprends pas ta réponse. Le premier processus que vous montrez a le prix du café à une pièce et la machine oblige d'une manière ou d'une autre l'utilisateur à insérer une pièce. Je ne vois aucun lien avec la question. Le deuxième processus semble sur la bonne voie, mais qu'est-ce que censé faire ?? c¯
Gilles 'SO- arrête d'être méchant'
@ Gilles: rend l'argent, mais il vaudrait mieux que vous nous donniez un autre nom pour renvoyer l'argent. c¯
Stéphane Gimenez
@ StéphaneGimenez Tu as raison, j'ai ajouté ça.
Gilles 'SO- arrête d'être méchant'
@Gilles et Stéphane: vous avez raison, est un très mauvais choix pour le remboursement. (Par exemple, vous pourriez exiger que la machine soit asynchrone: r . ( ˉ cM ) , puis la machine pourrait la prendre elle-même, vous devrez donc être rapide pour attraper votre argent!)c¯r.(c¯M)
jmad
@ Gilles: J'ai aussi choisi , indépendamment de toi. Je suppose que c'est le choix canonique :-)b¯
jmad
5

M0

M0:=c.M1

M1:=dtea.e¯tea.M1+r.b¯.M0+c.M2

Mn:=dtea.e¯tea.Mn-1+café.e¯café.Mn-2+r.b¯.b¯.nM0+c.Mn+1

(Mais utiliser des processus infinis, c'est comme tricher).

Stéphane Gimenez
la source
J'aime l'aspect compositionnel ici. Cependant, je suppose que c'est bien pour l'automate de ne pas autoriser plus de deux pièces?
Raphael
Eh bien, cela donne également une idée de la façon de traiter les pièces de monnaie ayant des valeurs différentes :-)
Stéphane Gimenez