RCS "$Id: Agent.sig,v 1.4 1998/08/13 11:37:10 pxs Exp $"; (* This is the public interface of "Agents". *) signature AGENT = sig val processAlgebra : cwbProcessAlgebra (* which process algebra is this? *) structure A : ACT type agent val hashval : agent -> word val eq : agent * agent -> bool (* This is a real total order, but I make no guarantees about which! *) val le : agent * agent -> bool val mkstr : agent -> string val makeAgentFromNextSteps : (A.act * V.var list) list -> agent val makeAgentFromVar : V.var -> agent (* Make each variable the name of the corresponding agent. *) val bindVarsToAgents : (V.var * agent) list -> unit val mkagent : string -> agent val transitions : agent -> (A.act * agent) list (* I/O *) (* INPUT: reading things from the user *) (* Problem: this expects the agent to be the last thing. Silly? *) val readAgent : unit -> agent val readVarAgent : unit -> (V.var * agent) (* Things reading two args expect (first,second). *) val readAgentPair : unit -> (agent * agent) (* OUTPUT: showing things to the user *) val printagents : agent list -> unit val printexps : (A.act list * agent) list -> unit val printders : (A.act * agent) list -> unit val printdersseq : (A.act list * agent) list -> unit (* for PG, yuk, Perdita *) val diverges : agent -> bool val prefixform : agent -> agent end