initial commit
This commit is contained in:
commit
81b7c68bb3
9 changed files with 135 additions and 0 deletions
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
*.rs diff=rust
|
||||||
20
.gitignore
vendored
Normal file
20
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/rust
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=rust
|
||||||
|
|
||||||
|
### Rust ###
|
||||||
|
# Generated by Cargo
|
||||||
|
# will have compiled files and executables
|
||||||
|
debug/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||||
|
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||||
|
Cargo.lock
|
||||||
|
|
||||||
|
# These are backup files generated by rustfmt
|
||||||
|
**/*.rs.bk
|
||||||
|
|
||||||
|
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||||
|
*.pdb
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/rust
|
||||||
11
Cargo.toml
Normal file
11
Cargo.toml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[package]
|
||||||
|
name = "argus"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
authors = ["Anand Balakrishnan"]
|
||||||
|
license = "BSD-3-Clause"
|
||||||
|
|
||||||
|
edition = "2021"
|
||||||
|
rust-version = "1.66"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
29
LICENSE
Normal file
29
LICENSE
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
BSD 3-Clause License
|
||||||
|
|
||||||
|
Copyright (c) 2022, Anand Balakrishnan
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
31
README.md
Normal file
31
README.md
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
Argus: Temporal Logic Monitoring Tool
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
Argus aims to be a tool to generate monitors for Signal Temporal Logic (STL), and its
|
||||||
|
different semantics.
|
||||||
|
|
||||||
|
This library is a direct successor of my
|
||||||
|
[`signal-temporal-logic`](https://github.com/anand-bala/signal-temporal-logic/) tool,
|
||||||
|
and is inspired by the following projects:
|
||||||
|
|
||||||
|
- [py-metric-temporal-logic] is a tool written in pure Python, and provides an elegant
|
||||||
|
interface for evaluating discrete time signals using Metric Temporal Logic (MTL).
|
||||||
|
- [RTAMT] is a Python library for offline and online
|
||||||
|
monitoring of STL specifications.
|
||||||
|
- [Breach] and [S-TaLiRo] are [Matlab] toolboxes designed for falsification and
|
||||||
|
simulation-based testing of cyber-physical systems with STL and MTL specifications,
|
||||||
|
respectively. One of their various features includes the ability to evaluate the
|
||||||
|
robustness of signals against STL/MTL specifications.
|
||||||
|
|
||||||
|
The goal of this tool is to provide offline and online monitors for Signal Temporal
|
||||||
|
Logic (STL) and its semantics, focussing on performance and ease of use in controllers
|
||||||
|
(for training and monitoring them).
|
||||||
|
|
||||||
|
The project name is inspired from [Argus Panoptes].
|
||||||
|
|
||||||
|
[Argus Panoptes]: https://www.britannica.com/topic/Argus-Greek-mythology
|
||||||
|
[py-metric-temporal-logic]: https://github.com/mvcisback/py-metric-temporal-logic/
|
||||||
|
[Matlab]: https://www.mathworks.com/products/matlab.html
|
||||||
|
[Breach]: https://github.com/decyphir/breach
|
||||||
|
[S-TaLiRo]: https://sites.google.com/a/asu.edu/s-taliro/s-taliro
|
||||||
|
[RTAMT]: https://github.com/nickovic/rtamt
|
||||||
1
clippy.toml
Normal file
1
clippy.toml
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
msrv = "1.66"
|
||||||
16
justfile
Normal file
16
justfile
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
build *ARGS:
|
||||||
|
cargo build {{ARGS}}
|
||||||
|
|
||||||
|
test *ARGS:
|
||||||
|
cargo test {{ARGS}}
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
fd -e rs -x rustfmt +nightly {}
|
||||||
|
|
||||||
|
doc:
|
||||||
|
cargo doc
|
||||||
|
fd -e md . doc/ -x rustdoc {}
|
||||||
|
fd -e html . doc/ -x mv {} target/doc/argus/
|
||||||
|
|
||||||
|
serve-doc: doc
|
||||||
|
python3 -m http.server -d target/doc/
|
||||||
11
rustfmt.toml
Normal file
11
rustfmt.toml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
edition = "2021"
|
||||||
|
max_width = 120
|
||||||
|
comment_width = 88
|
||||||
|
wrap_comments = true
|
||||||
|
format_strings = true
|
||||||
|
group_imports = "StdExternalCrate"
|
||||||
|
imports_granularity = "Module"
|
||||||
|
condense_wildcard_suffixes = true
|
||||||
|
use_field_init_shorthand = true
|
||||||
|
|
||||||
|
unstable_features = true
|
||||||
14
src/lib.rs
Normal file
14
src/lib.rs
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
pub fn add(left: usize, right: usize) -> usize {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue