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 41
    • Issues 41
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • 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
  • fltl

Last edited by Pablo Laciana Jun 17, 2025
Page history

fltl

Fluents and LTL properties

With the fluent keyword we can define a set of transitions that if taken will make the fluent be True (if the transition was in the left set) or False (for transitions in the second set) as shown below.

assert can be conjunction and disjunction of fluents with the && and || operators respectively.

ltl_property can have temporal operators as well, [] indicates that the following must always hold, and <> eventually.

The liveness keyword in controllerSpec takes one assertion L and will make it so the built controller ensures []<>L. The assumption keyword can be used in the same way as liveness, and the controller will guarantee that []<>A -> []<>L

Example of a controllable case, using DCS as algorithm:

Example = A0,
A0 = (a -> A1),
A1 = (c_1 -> Up | u_1 -> Down),
Up = (u_2 -> Up),
Down = (u_3 -> Down).

fluent UpF = <u_2, {a, u_3}>
fluent DownF = <u_3, {a, u_2}>

assert idealDirection = DownF

||Plant = Example.

controllerSpec Goal = {
liveness = {idealDirection}
controllable = {c_1}
}

heuristic ||DirectedController = Plant~{Goal}.
Clone repository
  • Developer
  • End User
  • devs
    • outputmessages
  • enduser
    • DCS
    • fltl
    • fsp_keywords
    • helloworld
    • reactiveSynthesis
    • supervisoryControl
  • Home