Get started
Install SENTIL
Install SENTIL for your ecosystem via package managers or build it yourself from source.
Overview
Every SENTIL package carries the compiled engine inside it, so your package manager is the whole install.
From a package manager
You need Python 3.8 or newer.
pip install sentilVerify:
import sentil
from sentil import Formula
trace = sentil.Trace([0, 1, 2, 3, 4], {"speed": [12, 9, 7, 4, 6]})
print(Formula.parse("G (speed > 5)").robustness(trace))-1.0The Python page has the pandas extra, streaming, probabilistic checking, and the full API.
You need a stable Rust toolchain. In your project:
cargo add sentilVerify:
use sentil::{Formula, Trace};
fn main() -> sentil::Result<()> {
let mut trace = Trace::new(vec![0.0, 1.0, 2.0, 3.0, 4.0])?;
trace.add_signal("speed", vec![12.0, 9.0, 7.0, 4.0, 6.0])?;
println!("{}", Formula::parse("G (speed > 5)")?.robustness(&trace)?);
Ok(())
}-1The Rust page covers the feature flags, the monitor-only build, and the full API.
The C ABI ships as sentil, through either package manager:
vcpkg install sentilconan install --requires=sentil/0.3.0Verify the toolchain sees it:
pkg-config --modversion sentil0.3.0The C page wires it into CMake or pkg-config, gives the full API reference, and covers the .deb and .rpm packages and the release archives.
The C++ wrapper ships as sentil-cpp and pulls the C ABI in with it, so this one package is enough:
vcpkg install sentil-cppconan install --requires=sentil-cpp/0.3.0Verify the toolchain sees it:
pkg-config --modversion sentil0.3.0The C++ page wires it into CMake or pkg-config, gives the full API reference, and covers the .deb and .rpm packages and the release archives.
Requires JDK 11 or later.
<dependency>
<groupId>io.github.sedislab</groupId>
<artifactId>sentil</artifactId>
<version>0.3.0</version>
</dependency>For Gradle: implementation("io.github.sedislab:sentil:0.3.0").
Verify:
import io.github.sedislab.sentil.*;
public class Main {
public static void main(String[] args) throws Exception {
try (Trace trace = Trace.create(new double[]{0, 1, 2, 3, 4});
Formula phi = Formula.parse("G (speed > 5)")) {
trace.addSignal("speed", new double[]{12, 9, 7, 4, 6});
System.out.println(phi.robustness(trace)); // -1.0
}
}
}The Java page covers the handle lifecycle and the full API reference.
] add SentilVerify:
using Sentil
trace = Trace(collect(0.0:1.0:4.0), "speed", [12, 9, 7, 4, 6])
println(robustness(formula("G (speed > 5)"), trace))-1.0The Julia page covers streaming, probabilistic checking, and the full API.
You need MATLAB R2021b or newer. Get Sentil.mltbx from the File Exchange or a GitHub release, then double-click it or install from the command window:
matlab.addons.toolbox.installToolbox('Sentil.mltbx')Verify:
trace = sentil.Trace([0 1 2 3 4], 'speed', [12 9 7 4 6]);
phi = sentil.Formula.parse('G (speed > 5)');
phi.robustness(trace) % -1The MATLAB page covers the Simulink block and the full API.
# macOS or Linux
brew install sedislab/sentil/sentil# Windows
winget install SEDIS.SENTILScoop, the AUR, cargo install sentil-cli, and the per-platform archives are on the CLI page.
Verify:
sentil --versionsentil 0.3.0The CLI page has every subcommand, the Raspberry Pi install, and the output formats.
For Humble, Jazzy, Kilted, and Lyrical; swap the distribution name into the package:
sudo apt install ros-humble-sentil-rosVerify:
ros2 pkg xml sentil_ros | head -3A <name>sentil_ros</name> line means SENTIL is available in the workspace. The ROS page has the colcon build, the monitor node, and its parameters.
Don't have a package manager?
Raspberry Pi
ARM archives, which board takes which, and the on-device library install.
Microcontrollers
Arduino, PlatformIO, ESP-IDF, Zephyr, and bare metal.
Apollo
Drop modules/sentil into an Apollo checkout and build it with Bazel.
AUTOSAR Adaptive
Build the adaptive applications against a vendor stack or the bundled stub.
From source
You need a Rust toolchain.
git clone https://github.com/sedislab/SENTIL
cd SENTIL
cargo install --path sentil-cli # the CLI, onto your path
cargo build --release -p sentil-ffi # libsentil + sentil-ffi/include/sentil.hEach language page has its own from-source section for building that binding against a local core.
Next step
With SENTIL installed, write your first monitor.