# Glossary¶

Baseline
The horizontal line shown in a timeline to represent the zero point of a waveform.
Block prefix
The section of a signal type to the left of the turnstile, consisting of a list of key types. Each array dimension of a variable has a corresponding key type in the variable’s block prefix. In definitions, block prefixes contain block prefix variables represented by the letter Γ (gamma). See the article on blocks and arrays for more information.
Canonical name
An instance variable name chosen by CertSAFE as the unique identifier for a variable for display purposes.
Case table
A table whose inputs take discrete values and whose outputs are computed by simply looking up the appropriate value.
Child unit
A unit in a composite unit type definition. Can have a definition child name.
Component
A combination of a presentation and implementation. Together with wire segments, components are one of the two types of objects that can be placed in a diagram. The implementation of a component is a unit.
Composite unit type
A unit type that is defined as a collection of I/Os and child units connected by skeleton networks. The two varieties of composite unit type are diagrams and stitches.
Constness constraint
An annotation indicating that a skeleton network should be statically constant.
Consumer
A user of values. An input of a unit. In the context of instances, refers specifically to an input of a unit of a non-composite unit type. See also producer.
Controlled variable
A variable whose values in a simulation are being overridden with user-defined values. A variable is controlled if at least one IntelliPoint has been placed on it.
Custom component
A user-defined component, as opposed to a primitive or the automatically-generated component for a direct reference.
Data type
A class of values, like “Boolean” or “32-bit integer”. Since the CertSAFE language is statically-typed, you can view information about the data types of units and variables without creating a simulation. CertSAFE uses type inference to automatically deduce most data types. See also signal type, type constant, type variable, and type class.
Definition
A resource that specifies the behavior of a unit type. Contrast with instance.
Definition child name
A user-defined identifier for a child unit. Contrast with instance child name.
Definition variable name
A user-defined label connected to a skeleton network. Can be either an I/O or a local name. Contrast with instance variable name.
Dependency
Value Y is dependent upon value X if X is used, directly or indirectly, in the definition of Y.
Diagram
A composite unit type that represents logic as a collection of components connected by wire segments in a 2-D layout. Most of a typical CertSAFE project’s logic is described in diagrams.
Direct reference
The result of dragging a user-defined unit type from the Projects view into a diagram editor. A wrapper component with a default presentation is automatically generated for a direct reference.
Dockable
A tab in the CertSAFE user interface that can be moved around and stacked with other dockables. Either a view or an editor.
Downstream
A value Y is downstream of a value X if Y is dependent upon X. Inverse of upstream.
Editor
A dockable for viewing and modifying a resource in a project, like a diagram or table. Editors always appear in the center of a CertSAFE window and can only be stacked with other editors.
Enumeration
A user-defined data type consisting of a finite collection of distinct values.
Frame
An abstraction of the passage of time as an instantaneous discrete step. All simulation in CertSAFE happens at frame boundaries.
Free end
A wire end not connected to any other wire ends. CertSAFE generates a warning if a diagram contains a free end.
Fold
An operation that loops over an array dimension and accumulates the entries along that dimension to produce an array with one fewer dimension. A varargs primitive can be made to perform a fold operation by setting it to block mode. For example, an AND gate set to block level 1, given as input a 1-dimensional array, will output a single Boolean value that is True if and only if all of the values in the input array are True. Custom fold operations can be written using the One Index Delay and Fold End primitives. See the article on blocks and arrays for more information.
I/O
An input or output of a unit. A definition variable name that is exported from a unit to become part of that unit’s interface to the outside world.
Implementation
The part of a component that defines its simulation behavior and interaction with the type system. Specified as some unit type.
Instance
A unit that has been fully resolved and expanded out as part of an instance hierarchy.
Instance child name
A path to a unit in an instance hierarchy. Each unit in the hierarchy has exactly one instance child name. One of the two types of instance paths.
Instance hierarchy
The tree of expanded definitions induced by a choice of root. See the articles Understanding instances for more information.
Instance path
A unique identifier for an object in an instance hierarchy formed by stringing a chain of names together. Either an instance child name or an instance variable name.
Instance variable name
A path to a variable in an instance hierarchy. A single variable can have zero, one, or many instance variable names due to variable merging. One of the two types of instance paths.
Instantaneous dependency
Value Y is instantaneously dependent upon value X if X must be computed before Y can be computed within a single frame. CertSAFE only evaluates this statically; so, for example, the output of a Boolean switch is instantaneously dependent on all three of its inputs even though only two of the input values are used on any frame.
IntelliPoint
A control point for designing simulation inputs.
Interpolation table
A table whose inputs and outputs are continuous, with the output values determined by interpolating between known data points. Interpolation tables are commonly used for approximating complex functions.
Junction
A grid location where three or more wire ends come together. Represented as a thick black dot in CertSAFE. Contrast with wire crossing.
Key type
The type used to index an array dimension. Each dimension of an array has a corresponding key type, listed in the block prefix of the variable. For example, a variable with type “UInt8 ⊢ Float32” is a single-dimensional array of 256 floating point values. The key type of the single array dimension is UInt8, and the scalar type is Float32.
Literal
A primitive that simply outputs a constant value, like True or 3.14. Numeric literals are polymorphic in CertSAFE.
Local name
A definition variable name that is not exported from a composite unit type and is entirely local to that definition. Typically given to temporary intermediate values.
Palette
A collection of components organized for fast access during diagram creation. There is a default palette that every project gets on creation, and it is also possible to create user-defined palettes. Palettes can be displayed in the Palette view.
Pin
An I/O of a component in a diagram.
Pointwise
Used in reference to components that operate on each element of an array individually and independently of every other element. When applied to multiple arrays, a pointwise operation is applied to elements at corresponding locations in the input arrays.
Polymorphic
A unit is polymorphic if it can be used with various different data types for some of its I/Os. For example, the switch primitive is polymorphic because the type of data being switched upon can be different for different switch units. A polymorphic unit has type variables in its type signature.
Presentation
The display and user interaction aspects of a component, including how the component is drawn, where its pins are positioned, etc.
Primitive
A component that is built into CertSAFE rather than being user-defined. Boolean logic gates, arithmetic operations, and one-frame delays are examples of some of the types of primitives in CertSAFE.
Probe
A user-interface element connected to a wire network to show its value during simulation of a model.
Producer
A source of values. An output of a unit. In the context of instances, refers specifically to an output of a unit of a non-composite unit type. See also consumer.
Project
A grouping of resources that specifies how file cross-references are resolved and provides structure information and general metadata. Each project file (*.cxproj) defines a single project.
Pure
If a skeleton network or unit output is pure, then it is statically constant if and only if all of the inputs it is instantaneously dependent on are statically constant. Stateless units, such as arithmetic operations, have pure outputs.
Resource
A file in a CertSAFE project.
Root
A unit type that acts as the top level for simulation and instance navigation in CertSAFE.
Scalar type
The data type of the values of a variable, as distinct from the key types of its array dimensions. For an array with type “[1..5], UInt8 ⊢ Float32”, the scalar type is Float32.
Signal type
The type of a variable or I/O. A signal type consists of a block prefix and a scalar type, separated by a turnstile symbol.
Simulation
A description of the inputs to a model and layout information for visualizing the model’s behavior, to be simulated in a single execution representing a contiguous period of time.
Simulation vectors
A list of instance variable names and associated values at each frame.
Skeleton network
In a composite unit type, a linked group of I/Os of child units, together with connected definition variable names. Triple-clicking on a wire segment in a diagram editor selects a skeleton network.
Statically constant
A skeleton network or variable is statically constant if CertSAFE’s constness inference system determines that the value can never change during a simulation. Statically constant wires are displayed as gray in the diagram editor.
Stitch
A composite unit type that connects other composite units together using a tabular notation.
Table
A unit type that is defined primarily by a tabular arrangement of values. Either a case table or an interpolation table.
Terminator
A special primitive that suppresses the warning generated when a skeleton network has no consumers. In general, it can be applied any time you want to indicate that a value is deliberately unused.
Time cursor
The vertical line shown in a timeline to represent the position in time the mouse cursor is pointed at.
Timeline
The large central area where waveforms are displayed in the editor for a simulation.
Turnstile
The symbol ⊢ used in signal types to separate the block prefix from the scalar type. Based on the turnstile symbol from mathematical logic, it has the same meaning: given values of the types on the left, you can get a value of the type on the right.
Type
See data type.
Type annotation
A constraint indicating that a skeleton network should have a particular data type.
Type class
A constraint that restricts a type variable to be instantiated only with data types that support certain operations. A type class is not itself a data type, but rather a restriction on which data types can be used in the presence of polymorphism. For example, the Ordered type class imposes a requirement that a type variable be substituted with a type that supports “less than” / “greater than” comparisons.
Type constant
A specific data type, like UInt8, Float64, or an enum type. Contrast with type variable.
Type signature
A description of how a unit interacts with CertSAFE’s type inference system. The type signature of a unit can be viewed in CertSAFE by mousing over the unit.
Type variable
A placeholder where an actual data type will be substituted in the type signature of a unit that is polymorphic. Type variables are represented by Greek letters in the CertSAFE user interface to distinguish them from ordinary data types. Contrast with type constant.
Unit type
A class of unit. Multiple individual units can have the same unit type. “Switch” is an example of a unit type, since a CertSAFE project can contain many individual switch units. Similarly, each diagram, stitch, and table in a project is a unit type that can be specified as the implementation for a custom component.
Unit
A pluggable chunk of logic with inputs and outputs (I/Os). The main elements making up a CertSAFE model. The implementation of a component is a unit.
Upstream
A value X is upstream of a value Y if Y is dependent upon X. Inverse of downstream.
Varargs primitive
A primitive component that has a variable number of inputs, controlled by a numeric property. Examples of varargs primitives include the Boolean AND/OR/XOR components and the Min/Max Selector components. Varargs primitives can be set to block mode to perform a fold over an input array.
Variable
A linked group of connections in an instance hierarchy that hold a single value at any point in a simulation. One variable can have many instance variable names. Variables are the result of the variable merging process.
View
A dockable not associated with a particular resource that provides supplementary information, options, or tools. The Projects, Palette, and Properties dockables are examples of views.
Waveform
The display of a variable in a timeline as a Cartesian plot that can be moved and rescaled.
Wire crossing
A grid location where two perpendicular wires cross without connecting. Contrast with junction.
Wire end
Either a pin or one end of a wire segment.
Wire network
A linked group of wire segments and pins in a diagram. Double-clicking on a wire segment in a diagram editor selects a wire network. Wire networks can be merged together by definition variable name primitives to form skeleton networks.
Wire segment
A line that can connect pins and other wire segments together to form a wire network. Each wire segment has two wire ends. Together with components, wire segments are one of the two types of objects that can be placed in a diagram.