//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2010, 2026 Contributors to the Eclipse Foundation
//
// See the NOTICE file(s) distributed with this work for additional
// information regarding copyright ownership.
//
// This program and the accompanying materials are made available
// under the terms of the MIT License which is available at
// https://opensource.org/licenses/MIT
//
// SPDX-License-Identifier: MIT
//////////////////////////////////////////////////////////////////////////////

// Including common attributes to set for all documents within this directory.
include::_root_attributes.asciidoc[]

// Enable inclusion of custom content from '*-docinfo*.html' files.
:docinfo: private

// Enable custom stylesheet.
:stylesheet: assets/asciidoctor-escet-cif.css

// Use this for asciidoc documents containing a title.
:doctype: book

= CIF documentation
:author: Copyright (c) 2010, 2026 Contributors to the Eclipse Foundation
:favicon: favicon.png

CIF is a declarative modeling language for the specification of discrete event, timed, and hybrid systems as a collection of synchronizing automata.
The CIF tooling supports the entire development process of controllers, including among others specification, supervisory controller synthesis, simulation-based validation and visualization, verification, real-time testing, and code generation.
Combined they enable a synthesis-based engineering approach to efficiently and cost-effectively design and implement high-quality controllers.

CIF is one of the tools of the Eclipse ESCET(TM) project.
Visit the link:https://eclipse.dev/escet/{escet-deploy-folder-name}[project website] for downloads, installation instructions, source code, general tool usage information, information on how to contribute, and more.

ifdef::website-output[]
TIP: You can link:eclipse-escet-cif-manual.pdf[download this manual] as a PDF as well.
endif::website-output[]

The documentation consists of:

* <<sbe-chapter-index,CIF synthesis-based engineering manual>>
* <<lang-tut-chapter-index,CIF language tutorial>>
* <<lang-ref-chapter-index,CIF language reference manual>>
* <<tools-chapter-index,CIF tool manual>>
* <<examples-chapter-index,CIF examples>>
* <<release-notes-chapter-index, CIF release notes>>
* <<dev-chapter-index, CIF developers manual>>
* <<history-chapter-index,CIF history>> (and why it's called 'CIF')
* <<legal-chapter-index, Legal information>>

A screenshot showing a CIF model and simulation:

image::{imgsdir}/screenshot_ide.png[]

// Synthesis-based engineering manual

include::synthesis-based-engineering/index.asciidoc[leveloffset=+2]

include::synthesis-based-engineering/supervisory-controllers.asciidoc[leveloffset=+3]

include::synthesis-based-engineering/approaches/index.asciidoc[leveloffset=+3]

include::synthesis-based-engineering/approaches/traditional-engineering.asciidoc[leveloffset=+4]

include::synthesis-based-engineering/approaches/model-based-engineering.asciidoc[leveloffset=+4]

include::synthesis-based-engineering/approaches/verification-based-engineering.asciidoc[leveloffset=+4]

include::synthesis-based-engineering/approaches/synthesis-based-engineering.asciidoc[leveloffset=+4]

include::synthesis-based-engineering/example.asciidoc[leveloffset=+3]

include::synthesis-based-engineering/in-practice/index.asciidoc[leveloffset=+3]

[[virtual-toc-entry--sbe-process]]
==== Development process

include::synthesis-based-engineering/in-practice/steps/modeling-events.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/modeling-plant.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/modeling-plant-relations.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/modeling-requirements.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/marking.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/synthesis.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/verification-and-validation.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/steps/implementation.asciidoc[leveloffset=+5]

[[virtual-toc-entry--sbe-advanced]]
==== Advanced topics

include::synthesis-based-engineering/in-practice/advanced/incremental-development.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/advanced/too-limited-behavior.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/advanced/synthesis-performance.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/advanced/non-monolithic-synthesis.asciidoc[leveloffset=+5]

include::synthesis-based-engineering/in-practice/example.asciidoc[leveloffset=+4]

include::synthesis-based-engineering/challenges.asciidoc[leveloffset=+3]

// Language tutorial

include::language-tutorial/index.asciidoc[leveloffset=+2]

[[virtual-toc-entry--lang-tut-basics]]
=== Basics

include::language-tutorial/basics/automata.asciidoc[leveloffset=+4]

include::language-tutorial/basics/synchronization.asciidoc[leveloffset=+4]

include::language-tutorial/basics/non-determinism.asciidoc[leveloffset=+4]

include::language-tutorial/basics/alphabet.asciidoc[leveloffset=+4]

include::language-tutorial/basics/event-placement.asciidoc[leveloffset=+4]

include::language-tutorial/basics/shorter-notations.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-data]]
=== Data

include::language-tutorial/data/discrete-variables.asciidoc[leveloffset=+4]

include::language-tutorial/data/discvar-change.asciidoc[leveloffset=+4]

include::language-tutorial/data/loc-var-duality1.asciidoc[leveloffset=+4]

include::language-tutorial/data/loc-var-duality2.asciidoc[leveloffset=+4]

include::language-tutorial/data/read-write.asciidoc[leveloffset=+4]

include::language-tutorial/data/monitoring.asciidoc[leveloffset=+4]

include::language-tutorial/data/asgn-old-vs-new.asciidoc[leveloffset=+4]

include::language-tutorial/data/tau-event.asciidoc[leveloffset=+4]

include::language-tutorial/data/discvar-init.asciidoc[leveloffset=+4]

include::language-tutorial/data/init-preds.asciidoc[leveloffset=+4]

include::language-tutorial/data/locs-as-vars.asciidoc[leveloffset=+4]

include::language-tutorial/data/state-invariants.asciidoc[leveloffset=+4]

include::language-tutorial/data/state-evt-excl-invariants.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-values]]
=== Types and values

include::language-tutorial/values/types-values-exprs.asciidoc[leveloffset=+4]

include::language-tutorial/values/overview.asciidoc[leveloffset=+4]

include::language-tutorial/values/integers.asciidoc[leveloffset=+4]

include::language-tutorial/values/ranged-integers.asciidoc[leveloffset=+4]

include::language-tutorial/values/reals.asciidoc[leveloffset=+4]

include::language-tutorial/values/booleans.asciidoc[leveloffset=+4]

include::language-tutorial/values/strings.asciidoc[leveloffset=+4]

include::language-tutorial/values/enumerations.asciidoc[leveloffset=+4]

include::language-tutorial/values/tuples.asciidoc[leveloffset=+4]

include::language-tutorial/values/lists.asciidoc[leveloffset=+4]

include::language-tutorial/values/bounded-lists-and-arrays.asciidoc[leveloffset=+4]

include::language-tutorial/values/sets.asciidoc[leveloffset=+4]

include::language-tutorial/values/dictionaries.asciidoc[leveloffset=+4]

include::language-tutorial/values/combining-values.asciidoc[leveloffset=+4]

include::language-tutorial/values/if-and-switch.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-reuse1]]
=== Scalable solutions and reuse (1/2)

include::language-tutorial/reuse1/constants.asciidoc[leveloffset=+4]

include::language-tutorial/reuse1/algebraic-variables.asciidoc[leveloffset=+4]

include::language-tutorial/reuse1/algvar-equations.asciidoc[leveloffset=+4]

include::language-tutorial/reuse1/type-declarations.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-time]]
=== Time

include::language-tutorial/time/intro.asciidoc[leveloffset=+4]

include::language-tutorial/time/continuous-variables.asciidoc[leveloffset=+4]

include::language-tutorial/time/contvar-equations.asciidoc[leveloffset=+4]

include::language-tutorial/time/equations.asciidoc[leveloffset=+4]

include::language-tutorial/time/var-overview.asciidoc[leveloffset=+4]

include::language-tutorial/time/urgency.asciidoc[leveloffset=+4]

include::language-tutorial/time/deadlock-livelock.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-channels]]
=== Channel communication

include::language-tutorial/channels/intro.asciidoc[leveloffset=+4]

include::language-tutorial/channels/void.asciidoc[leveloffset=+4]

include::language-tutorial/channels/chan-sync-combi.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-functions]]
=== Functions

include::language-tutorial/functions/intro.asciidoc[leveloffset=+4]

include::language-tutorial/functions/internal-functions.asciidoc[leveloffset=+4]

include::language-tutorial/functions/statements.asciidoc[leveloffset=+4]

include::language-tutorial/functions/functions-as-values.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-reuse2]]
=== Scalable solutions and reuse (2/2)

include::language-tutorial/reuse2/aut-def-inst.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/aut-def-params.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/aut-def-param-kinds.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/groups.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/group-defs.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/imports.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/imports-libraries.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/imports-groups.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/namespaces.asciidoc[leveloffset=+4]

include::language-tutorial/reuse2/input-variables.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-stochastics]]
=== Stochastics

include::language-tutorial/stochastics/intro.asciidoc[leveloffset=+4]

include::language-tutorial/stochastics/discrete-continuous-constant.asciidoc[leveloffset=+4]

include::language-tutorial/stochastics/pseudo-randomness.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-svg]]
=== SVG visualization and interaction

include::language-tutorial/svg/visualization.asciidoc[leveloffset=+4]

include::language-tutorial/svg/first-example.asciidoc[leveloffset=+4]

include::language-tutorial/svg/inkscape.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-sun-moon.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-walk.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-rate.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-workstation.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-tank.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-lamps.asciidoc[leveloffset=+4]

include::language-tutorial/svg/example-buffers-products.asciidoc[leveloffset=+4]

include::language-tutorial/svg/interaction.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-text]]
=== Text

include::language-tutorial/text/print.asciidoc[leveloffset=+4]

include::language-tutorial/text/print-examples.asciidoc[leveloffset=+4]

include::language-tutorial/text/fmt.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-synthesis]]
=== Synthesis

include::language-tutorial/synthesis/index.asciidoc[leveloffset=+4]

include::language-tutorial/synthesis/automaton-kinds.asciidoc[leveloffset=+4]

include::language-tutorial/synthesis/invariant-kinds.asciidoc[leveloffset=+4]

include::language-tutorial/synthesis/event-controllability.asciidoc[leveloffset=+4]

include::language-tutorial/synthesis/marker-predicates.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-tut-annotations]]
=== Annotations

include::language-tutorial/annotations/index.asciidoc[leveloffset=+4]

include::language-tutorial/annotations/controller.asciidoc[leveloffset=+4]

include::language-tutorial/annotations/documentation.asciidoc[leveloffset=+4]

include::language-tutorial/annotations/partial.asciidoc[leveloffset=+4]

include::language-tutorial/annotations/reachability-requirement.asciidoc[leveloffset=+4]

include::language-tutorial/annotations/state.asciidoc[leveloffset=+4]

// Language reference manual

include::language-reference/index.asciidoc[leveloffset=+2]

[[virtual-toc-entry--lang-ref-syntax]]
=== Syntax

include::language-reference/syntax/lexical.asciidoc[leveloffset=+4]

include::language-reference/syntax/grammar.asciidoc[leveloffset=+4]

include::language-reference/syntax/xml.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-ref-svg]]
=== SVG visualization and interaction

include::language-reference/svg/index.asciidoc[leveloffset=+4]

include::language-reference/svg/svgfile.asciidoc[leveloffset=+5]

include::language-reference/svg/svgcopy.asciidoc[leveloffset=+5]

include::language-reference/svg/svgmove.asciidoc[leveloffset=+5]

include::language-reference/svg/svgout.asciidoc[leveloffset=+5]

include::language-reference/svg/svgin.asciidoc[leveloffset=+5]

[[virtual-toc-entry--lang-ref-text]]
=== Text

include::language-reference/text/printdecl.asciidoc[leveloffset=+4]

include::language-reference/text/printfile.asciidoc[leveloffset=+4]

include::language-reference/text/fmt.asciidoc[leveloffset=+4]

[[virtual-toc-entry--lang-ref-annotations]]
=== Annotations

include::language-reference/annotations/index.asciidoc[leveloffset=+4]

include::language-reference/annotations/builtin.asciidoc[leveloffset=+4]

include::language-reference/annotations/controller.asciidoc[leveloffset=+5]

include::language-reference/annotations/documentation.asciidoc[leveloffset=+5]

include::language-reference/annotations/partial.asciidoc[leveloffset=+5]

include::language-reference/annotations/reachability-requirement.asciidoc[leveloffset=+5]

include::language-reference/annotations/state.asciidoc[leveloffset=+5]

// Tool manual

include::tools/index.asciidoc[leveloffset=+2]

[[virtual-toc-entry--tools-specification]]
=== Specification tools

include::tools/text-editor.asciidoc[leveloffset=+4]

[[virtual-toc-entry--tools-analysis]]
=== Analysis tools

include::tools/infogen.asciidoc[leveloffset=+4]

include::tools/relations.asciidoc[leveloffset=+4]

[[virtual-toc-entry--tools-synthesis]]
=== Supervisory controller synthesis tools

include::tools/datasynth/index.asciidoc[leveloffset=+4]

include::tools/datasynth/starting.asciidoc[leveloffset=+5]

include::tools/datasynth/options.asciidoc[leveloffset=+5]

include::tools/datasynth/supported-specifications.asciidoc[leveloffset=+5]

include::tools/datasynth/early-problem-detection.asciidoc[leveloffset=+5]

include::tools/datasynth/resulting-supervisor.asciidoc[leveloffset=+5]

include::tools/datasynth/simplification.asciidoc[leveloffset=+5]

include::tools/datasynth/forward-reachability.asciidoc[leveloffset=+5]

include::tools/datasynth/fixed-point-order.asciidoc[leveloffset=+5]

include::tools/datasynth/input-variables.asciidoc[leveloffset=+5]

include::tools/datasynth/initialization.asciidoc[leveloffset=+5]

include::tools/datasynth/performance.asciidoc[leveloffset=+5]

include::tools/datasynth/edge-granularity.asciidoc[leveloffset=+5]

include::tools/datasynth/edge-order.asciidoc[leveloffset=+5]

include::tools/datasynth/variable-order/index.asciidoc[leveloffset=+5]

include::tools/datasynth/variable-order/options.asciidoc[leveloffset=+6]

include::tools/datasynth/variable-order/initial-ordering.asciidoc[leveloffset=+6]

include::tools/datasynth/variable-order/automatic-ordering.asciidoc[leveloffset=+6]

include::tools/datasynth/variable-order/advanced-configuration.asciidoc[leveloffset=+6]

include::tools/datasynth/operation-cache.asciidoc[leveloffset=+5]

include::tools/datasynth/state-requirement-invariants.asciidoc[leveloffset=+5]

include::tools/datasynth/debug-output.asciidoc[leveloffset=+5]

include::tools/datasynth/statistics.asciidoc[leveloffset=+5]

include::tools/datasynth/references.asciidoc[leveloffset=+5]

include::tools/multilevel.asciidoc[leveloffset=+4]

include::tools/eventbased/index.asciidoc[leveloffset=+4]

include::tools/eventbased/product.asciidoc[leveloffset=+5]

include::tools/eventbased/supervisorsynthesis.asciidoc[leveloffset=+5]

include::tools/eventbased/synthesis-analysis.asciidoc[leveloffset=+5]

include::tools/eventbased/nonconflicting-check.asciidoc[leveloffset=+5]

include::tools/eventbased/controllability-check.asciidoc[leveloffset=+5]

include::tools/eventbased/language-equivalence-check.asciidoc[leveloffset=+5]

include::tools/eventbased/nfa-to-dfa.asciidoc[leveloffset=+5]

include::tools/eventbased/dfa-minimize.asciidoc[leveloffset=+5]

include::tools/eventbased/projection.asciidoc[leveloffset=+5]

include::tools/eventbased/observer-check.asciidoc[leveloffset=+5]

include::tools/eventbased/automaton-abstraction.asciidoc[leveloffset=+5]

include::tools/eventbased/trim-check.asciidoc[leveloffset=+5]

include::tools/eventbased/trim.asciidoc[leveloffset=+5]

include::tools/cif2supremica.asciidoc[leveloffset=+4]

[[virtual-toc-entry--tools-v-and-v]]
=== Simulation, validation, and verification tools

include::tools/cifsim/index.asciidoc[leveloffset=+4]

[[virtual-toc-entry--tools-simulator-basics]]
===== Simulation basics

include::tools/cifsim/supported.asciidoc[leveloffset=+6]

include::tools/cifsim/start.asciidoc[leveloffset=+6]

include::tools/cifsim/init.asciidoc[leveloffset=+6]

include::tools/cifsim/termination.asciidoc[leveloffset=+6]

include::tools/cifsim/traces.asciidoc[leveloffset=+6]

include::tools/cifsim/repeated-simulation.asciidoc[leveloffset=+6]

[[virtual-toc-entry--tools-simulator-input-output]]
===== Simulation input/output

include::tools/cifsim/input/index.asciidoc[leveloffset=+6]

include::tools/cifsim/input/console.asciidoc[leveloffset=+7]

include::tools/cifsim/input/gui.asciidoc[leveloffset=+7]

include::tools/cifsim/input/automatic.asciidoc[leveloffset=+7]

include::tools/cifsim/input/trace.asciidoc[leveloffset=+7]

include::tools/cifsim/input/svg.asciidoc[leveloffset=+7]

include::tools/cifsim/input/semi-automatic.asciidoc[leveloffset=+7]

include::tools/cifsim/input/history.asciidoc[leveloffset=+7]

include::tools/cifsim/non-urgent-events.asciidoc[leveloffset=+6]

include::tools/cifsim/output/index.asciidoc[leveloffset=+6]

include::tools/cifsim/output/normal.asciidoc[leveloffset=+7]

include::tools/cifsim/output/debug.asciidoc[leveloffset=+7]

include::tools/cifsim/output/print.asciidoc[leveloffset=+7]

include::tools/cifsim/output/svgviz/index.asciidoc[leveloffset=+7]

include::tools/cifsim/output/svgviz/simulation.asciidoc[leveloffset=+8]

include::tools/cifsim/output/svgviz/debugging.asciidoc[leveloffset=+8]

include::tools/cifsim/output/svgviz/viewer.asciidoc[leveloffset=+8]

include::tools/cifsim/output/trajdata.asciidoc[leveloffset=+7]

include::tools/cifsim/output/plotviz.asciidoc[leveloffset=+7]

include::tools/cifsim/output/stateviz.asciidoc[leveloffset=+7]

include::tools/cifsim/output/realtime.asciidoc[leveloffset=+7]

[[virtual-toc-entry--tools-simulator-advanced]]
===== Simulation advanced topics

include::tools/cifsim/options.asciidoc[leveloffset=+6]

include::tools/cifsim/performance.asciidoc[leveloffset=+6]

include::tools/cifsim/solver/index.asciidoc[leveloffset=+6]

include::tools/cifsim/solver/basics-int.asciidoc[leveloffset=+7]

include::tools/cifsim/solver/basics-root.asciidoc[leveloffset=+7]

include::tools/cifsim/solver/root-problems.asciidoc[leveloffset=+7]

include::tools/cifsim/solver/options-outstep.asciidoc[leveloffset=+7]

include::tools/cifsim/solver/endtime-maxdelay.asciidoc[leveloffset=+7]

include::tools/cifsim/solver/options-int.asciidoc[leveloffset=+7]

include::tools/cifsim/solver/options-root.asciidoc[leveloffset=+7]

include::tools/cifsim/java-compiler.asciidoc[leveloffset=+6]

[[virtual-toc-entry--tools-simulator-misc]]
===== Simulation miscellaneous topics

include::tools/cifsim/execution-mode.asciidoc[leveloffset=+6]

include::tools/cifsim/complete-mode.asciidoc[leveloffset=+6]

include::tools/cifsim/extfuncs.asciidoc[leveloffset=+6]

include::tools/cifsim/extfuncs-java.asciidoc[leveloffset=+6]

include::tools/cifsim/profiling.asciidoc[leveloffset=+6]

include::tools/cifsim/distr-seeds.asciidoc[leveloffset=+6]

[[virtual-toc-entry--tools-simulator-dev]]
===== Simulation developer topics

include::tools/cifsim/max-time-point-tol.asciidoc[leveloffset=+6]

include::tools/cifsim/debug-gen-code.asciidoc[leveloffset=+6]

include::tools/cifsim/test-mode.asciidoc[leveloffset=+6]

include::tools/cif2mcrl2.asciidoc[leveloffset=+4]

include::tools/cif2uppaal.asciidoc[leveloffset=+4]

include::tools/controller-checker/index.asciidoc[leveloffset=+4]

include::tools/controller-checker/bounded-response.asciidoc[leveloffset=+5]

include::tools/controller-checker/confluence.asciidoc[leveloffset=+5]

include::tools/controller-checker/finite-response.asciidoc[leveloffset=+5]

include::tools/controller-checker/non-blocking-under-control.asciidoc[leveloffset=+5]

[[virtual-toc-entry--tools-implementation]]
=== Real-time testing, code generation, and implementation tools

include::tools/codegen/index.asciidoc[leveloffset=+4]

include::tools/codegen/c89.asciidoc[leveloffset=+5]

include::tools/codegen/c99.asciidoc[leveloffset=+5]

include::tools/codegen/java.asciidoc[leveloffset=+5]

include::tools/codegen/javascript.asciidoc[leveloffset=+5]

include::tools/codegen/html.asciidoc[leveloffset=+5]

include::tools/codegen/simulink.asciidoc[leveloffset=+5]

include::tools/codegen/simulink-example.asciidoc[leveloffset=+5]

include::tools/plcgen/index.asciidoc[leveloffset=+4]

include::tools/plcgen/twincat.asciidoc[leveloffset=+5]

include::tools/plcgen/s7.asciidoc[leveloffset=+5]

include::tools/cif2plc/index.asciidoc[leveloffset=+4]

include::tools/cif2plc/twincat.asciidoc[leveloffset=+5]

include::tools/cif2plc/s7.asciidoc[leveloffset=+5]

[[virtual-toc-entry--tools-misc]]
=== Miscellaneous tools

include::tools/cif2cif/index.asciidoc[leveloffset=+4]

include::tools/cif2cif/add-default-init-values.asciidoc[leveloffset=+5]

include::tools/cif2cif/anonymize-names.asciidoc[leveloffset=+5]

include::tools/cif2cif/convert-to-interface.asciidoc[leveloffset=+5]

include::tools/cif2cif/convert-uncntrl-events-to-cntrl.asciidoc[leveloffset=+5]

include::tools/cif2cif/convert-cntrl-events-to-uncntrl.asciidoc[leveloffset=+5]

include::tools/cif2cif/switches-to-ifs.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-alg-vars.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-aut-casts.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-channels.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-comp-def-inst.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-consts.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-equations.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-groups.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-if-updates.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-locs-in-exprs.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-monitors.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-self.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-state-event-excl-invs.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-state-invs.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-tau-event.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-tuple-field-projs.asciidoc[leveloffset=+5]

include::tools/cif2cif/elim-type-decls.asciidoc[leveloffset=+5]

include::tools/cif2cif/enums-to-consts.asciidoc[leveloffset=+5]

include::tools/cif2cif/enums-to-ints.asciidoc[leveloffset=+5]

include::tools/cif2cif/lift-events.asciidoc[leveloffset=+5]

include::tools/cif2cif/linearize-merge.asciidoc[leveloffset=+5]

include::tools/cif2cif/linearize-product.asciidoc[leveloffset=+5]

include::tools/cif2cif/linearize-product-with-merge.asciidoc[leveloffset=+5]

include::tools/cif2cif/merge-enums.asciidoc[leveloffset=+5]

include::tools/cif2cif/print-file-into-decls.asciidoc[leveloffset=+5]

include::tools/cif2cif/svg-file-into-decls.asciidoc[leveloffset=+5]

include::tools/cif2cif/relabel-supervisors-as-plants.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-annos.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-cif-svg-decls.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-io-decls.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-print-decls.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-pos-info.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-reqs.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-unused-alg-vars.asciidoc[leveloffset=+5]

include::tools/cif2cif/remove-unused-events.asciidoc[leveloffset=+5]

include::tools/cif2cif/simplify-others.asciidoc[leveloffset=+5]

include::tools/cif2cif/simplify-values.asciidoc[leveloffset=+5]

include::tools/cif2cif/simplify-values-optimized.asciidoc[leveloffset=+5]

include::tools/cif2cif/simplify-values-no-refs.asciidoc[leveloffset=+5]

include::tools/cif2cif/simplify-values-no-refs-optimized.asciidoc[leveloffset=+5]

include::tools/mergecif.asciidoc[leveloffset=+4]

include::tools/event-disabler.asciidoc[leveloffset=+4]

include::tools/explorer.asciidoc[leveloffset=+4]

include::tools/cif2yed.asciidoc[leveloffset=+4]

[[virtual-toc-entry--tools-scripting]]
=== Scripting

include::tools/scripting/intro.asciidoc[leveloffset=+4]

include::tools/scripting/tools.asciidoc[leveloffset=+4]

// Examples

include::examples.asciidoc[leveloffset=+2]

// Release notes

include::release-notes.asciidoc[leveloffset=+2]

// Developers

include::developers/index.asciidoc[leveloffset=+2]

include::developers/extract-from-cif.asciidoc[leveloffset=+3]

include::developers/lang-modify.asciidoc[leveloffset=+3]

// History

include::history.asciidoc[leveloffset=+2]

// Legal

include::documentation-legal.asciidoc[leveloffset=+2]

ifdef::pdf-output[]
[index]
== Index
endif::pdf-output[]
