Rule-Based Operational Semantics 

  Assignment Goal

The goal of this assignment is to build a rule-based transformation for the operational semantics of production systems for assembling armoured personnel carriers (APCs):

  Static Semantics

  1. A production system is a set of connected machines and conveyor belts.
  2. Machines can be operated by an operator. [use a class, not an attribute for an operator]
  3. A conveyor belt carries (unfinished) products.
  4. Machines are connected to exactly one conveyor belt on which they can drop processed products.
  5. Machines can either generate the parts of a APC (wheels, tracks, bodies, machine guns or water cannons), or process these parts or assembled APCs.
  6. Machines that process can be assemble machines, quality control or repair machines.
  7. Machines that process are connected to exactly one conveyor belt from which they take products that are to be processed.
  8. Conveyor belts can be connected.
  9. Quality control machines are a special kind of machine, as they can put products that need to be reworked on a different conveyor belt.

  Operational Semantics

  1. There is only one direction in which products can be moved from one conveyor belt to the other.
  2. Products can move from a conveyor belt to a connected conveyor belt.
  3. A generator for a certain APC part can put such a part on its connected conveyor belt.
  4. Machines can only process when there is an operator at the machine.
  5. An operator can go from one machine to the other if the required (unfinished) part(s) is/are ready for that machine.
  6. An assemble machine with an operator can take two tracks, a body and a machine gun from the input conveyor belt and process them into a war APC that is put on the output conveyor belt, or can take four wheels, a body and a water cannon from the input conveyor belt and process them into a riot APC that is put on the output conveyor belt.
  7. A repair machine with an operator can take an (unfinished) product from the input conveyor belt, repair it, and put it on the output conveyor belt.
  8. A quality control machine with an operator can take an assembled piece from the input conveyor belt and in case of a successful outcome puts it on the output conveyor belt, and in case of an error puts it on the other conveyor belt for pieces that need to be reworked.
[optional] More fine grained: conveyor belts are queues.
[optional] (Unfinished) products can get "broken" arbitrarily.

  Useful Links