System Validation Rules

This article details the full suite of system validation rules built into Logiop Studio. Validation rules ensure model consistency, maintain structural constraints, and guarantee that exported state machines adhere to system specifications.

System Rules

SV1001

System Rule
A root State Machine must have a unique name within its containing Project.
State Machines Project

SV1002

System Rule
Vertices and Transitions within a State Machine must have unique names.
State Machine Vertices Transitions

SV1003

System Rule
A Submachine must have a unique name within its root State Machine.
State Machine Submachine

SV1004

System Rule
A Submachine can only be referenced by Submachine States within its owning root State Machine tree.
State Machine Submachine

SV1005

System Rule
A Submachine cannot reference itself directly through nested Submachine States.
Submachine

SV1006

System Rule
A Submachine must contain exactly one top-level Composite State. All internal elements must reside within this root Composite State.
Submachine

SV1007

System Rule
Only one Connection Point Reference referencing a specific Connection Point of a Submachine can be created for a referencing Submachine State.
Submachine Submachine State Connection Point Connection Point Reference

SV1008

System Rule
A State Machine Behavior name must be unique across all Behavior types (Events, Actions, DoActivity, and Guards).
State Machine Behaviors

SV1009

System Rule
A State or Transition Behavior reference must resolve to an existing Behavior defined at the root State Machine scope.
State Machine Behaviors State Transition

SV1010

System Rule
Element names must start with a letter or underscore, contain only letters, digits, underscores, or single spaces, and avoid reserved keywords.
All

SV1011

System Rule
A State's visual dimensions cannot be reduced below the bounds of its connected Transitions, Connection Points, or contained Regions.
State

SV1012

System Rule
A Region's visual dimensions cannot be reduced below the bounds of its contained Vertices, nor below the locations of Transitions and Connection Points anchored to its parent State's edges.
Region

SV1013

System Rule
A Region must have a unique name within its parent State.
Region

SV1014

System Rule
Entry and Exit Point Vertices can only be added to a composite State.
Entry Point Exit Point State

SV1015

System Rule
A composite State must contain at least one Region.
State Region

SV1016

System Rule
A History Vertex can only be added to a Region of a composite State.
History State Region

SV1017

System Rule
All Canvas elements are movable except Transitions, which are automatically redrawn based on their connector handles.
Transition Transition Label Vertex

SV1018

System Rule
Only State, Join, and Fork Vertices, as well as Transition Labels, support manual resizing.
State Join Fork Transition Label Transition Vertex

SV1019

System Rule
Only the height of a Join or Fork Vertex can be adjusted, and it cannot be reduced below the bounds of its connected Transitions.
Join Fork

SV1020

System Rule
Entry and Exit Point Vertices can only be repositioned along the edges of their parent State.
Entry Point Exit Point State

SV1021

System Rule
Entry and Exit Point Vertices cannot be reparented to a different parent State.
Entry Point Exit Point State

SV1022

System Rule
Entry and Exit Point Vertices must have a unique name within its parent State's Connection Points.
Entry Point Exit Point State

SV1023

System Rule
A Transition originating from a descendant Vertex within a composite State must not target that containing composite State.
Transition State Vertex

SV1024

System Rule
A Transition originating from a composite State must not target a descendant Vertex within that composite State.
Transition State Vertex

SV1025

System Rule
A Transition originating from a Pseudostate cannot define Event triggers.
Transition Behaviors Pseudostate

SV1026

System Rule
The default placement for a Transition Label is adjacent to the Transition's source connector.
Transition Transition Label

SV1027

System Rule
When a Transition's source connector is moved along the same edge of its source Vertex, the attached Transition Label automatically shifts by the same delta. If the connector is moved to a different edge, the label resets to its default placement adjacent to the source connector.
Transition Transition Label

SV1028

System Rule
A Transition Label has a fixed height and only its width can be adjusted.
Transition Transition Label

SV1029

System Rule
An Internal Transition that is marked as deferred cannot define Guards or Effect Actions.
Internal Transition

SV1030

System Rule
Submachines inherit the Behaviors of their root State Machine and do not maintain a separate Behavior repository.
Submachine State Machine Behaviors

SV1031

System Rule
Notes for an element can contain a maximum of 500 characters.
All

Reserved Words

As specified in SV1010, element names must avoid reserved keywords to prevent identifier conflicts during runtime execution, code generation, and verification.

Reserved Keywords

Includes standard language keywords and Logiop reserved identifiers:

abstract as base bool break byte case catch char checked class const continue decimal default delegate defer do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal invocation is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

Contextual Keywords

Context-dependent identifiers restricted in element scope:

add alias and ascending async await by descending dynamic equals extension field file from get global group init into join let managed nameof nint not notnull nuint on or orderby partial record remove required scoped select set unmanaged value var when where with yield