Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M MTSA
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 31
    • Issues 31
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 3
    • Merge requests 3
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Metrics
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • lafhis
  • MTSA
  • Wiki
    • Enduser
  • Discrete Event Controller Synthesis

Last edited by Sebastian Uchitel Jun 19, 2026
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Discrete Event Controller Synthesis

MTSA supports a synthesising behaviour models that control a given plant to satisfy a given property. The plant is defined using an FSP composite process. The property is defined using the controllerSpec keyword.

controller ||CONTROLLER = (PLANT)~{SPECIFICATIONS}.

The specification includes various items, some are optional:

  • Safety properties. These are process names that describe bad behaviour with error states. They may have been constructed using the property or ltl_property keyword)
  • Assumptions. These are names of assertions that must be boolean formulae (i.e., no temporal operators). An assertion A is interpreted by the synthesis procedure as []<>A.
  • Liveness. As with assumptions, they are boolean formulae and are interpreted as being g preceded by []<>.
  • Controllable alphabet. This is the set of events that are controllable by the controller to be synthesised.
controllerSpec NAME = {
    safety = { COMMA SEPARATED PROCESS NAMES }
    assumption = { COMMA SEPARATED ASSERTION NAMES }
    liveness = { COMMA SEPARATED ASSERTION NAMES }
    controllable = { NAME OF SET OF LABELS }
}

To check if the assumptions are compatible use:

check compatibility ||CONTROLLERNAME = (PLANTNAME)~{CONTROLLERSPECNAME}.
  • Supervisory Control
  • Reactive Synthesis
  • DCS
Clone repository
  • Developer
  • End User
  • FSP Keywords
  • devs
    • outputmessages
  • enduser
    • DCS
    • Discrete Event Controller Synthesis
    • FSP
    • Fluents and LTL properties
    • Hello World
    • Modal Transition Systems
  • Home