A framework for the elicitation, specification, formalization and understanding of requirements.

Related tags

Deep Learningfret
Overview

FRET: Formal Requirements Elicitation Tool

Introduction

FRET is a framework for the elicitation, specification, formalization and understanding of requirements. Users enter system requirements in a specialized natural language. FRET helps understanding and review of semantics by utilizing a variety of forms for each requirement: natural language description, formal mathematical logics, and diagrams. Requirements can be defined in a hierarchical fashion and can be exported in a variety of forms to be used by analysis tools.

Contact

Please contact [email protected] and [email protected] for further information on FRET. Detailed information can be found in the FRET manual.

Installation

Detailed instructions can be found in installation instructions.

Platforms

FRET has been tested in a range of architecture/operating system combinations. It has been tested on PC Intel, Apple Mac and Sun architectures, with different versions and distributions of Windows, Mac OS X, and Linux.

License

FRET has been released under the NASA Open Source Agreement version 1.3, see LICENSE.pdf.

Contributors

See the FRET Contributors.

Publications

Here are some FRET-related Publications.

Comments
  • How to combine fret and cocosim to a fret-cocosim workflow?

    How to combine fret and cocosim to a fret-cocosim workflow?

    Hi, all. I've read the paper Bridging the Gap Between Requirements and Model Analysis and want to run an example of fret-cocosim workflow but I dont know how to combine them. Like how can I use the exported zip file? Is there any interface on the front-end in cocosim to import? I would appreciate it if there is any tutorial.

    opened by marious123g 17
  • How to understand the result of diagnose?

    How to understand the result of diagnose?

    I know my fretish has a problem with the use of 'after n time unit '. It seems not to work if "after n time unit" holds for many times within interval n , for RTGIL semantics of "after n time unit" requires !RES holds within n time unit. However, I do not understand the diagnosis since output variable C is always false. And is there any way to require RES to be true only after 2s? (At other time points, values of RES are non-deterministic)

    fretish I wrote: image

    data types and id types of variables: image

    result of "diagnose": image

    opened by Dustin-Grandret 16
  • Description of complex requirements

    Description of complex requirements

    Hello,Recently, I have been using FRET to describe some of the requirments, and I am facing some difficulties.The simple description is the following.When Compressor is started, the signal needs to stay off for a period of time and then enter the toggled state. The toggled state means that signal turns on and false alternates continuously.We can assume that compressor is the input and signal is the output. I want to ask if there is a description of this requirement.The following picture is the concrete description.The time can be any number. Requirement

    opened by baobao1225 12
  • the path generation

    the path generation

    Hello,I'm a student. I'm interested in the path generation template in FRET, but I haven't found it for a long time. Can you provide it? Finally, thank you very much for providing such good software as fret.

    opened by SoftPro 8
  • Unsuccessful installation of NuSMV path and the use of realizity use

    Unsuccessful installation of NuSMV path and the use of realizity use

    Hello , I am having problems with fret usage. I have installed the binaries of the NuSMV file in the environment variable, but in unbuntu 64-bit, FRET does not find NuSMV, causing SIMULATE to be unusable. I used the same method to be able to use under Windows installation.

    Another problem is that when I use the Realizity function, related dependencies have been installed normally, but when I check, solver error occurs, I do not know how to solve it

    opened by baobao1225 8
  • Suggestions

    Suggestions

    hi,recently, we've been using your tools FRET, and we have some problems writing requirements,therefore we'd like to offer you some suggestions for improvement. 1.As for scope,sometimes we need to use the operation of the corresponding mode,such as when we want to describe a res happen in the intersection of mode1 and mode2 in FRET,we want to describe in FRET: in mode1&mode2 the system shall satisfy res.but in mode1&mode2 is a Syntax violation. 2.As for timing,sometimes we need a variable that represents a time constant.such as in mode1 the system shall for time1 satisfy res.Time1 is a variable.However,time1 is a Syntax violation. 3.As for simulation,sometimes we need to simulate two or more requirement.Such as requirement1:when signal1 the system shall always sastisfy res . Requirement2:when signal2 the system shall immediately satisfy res. We want to simulate the traces of signal1,signal2,res and two requirement.

    Thank you for providing such excellent software.

    opened by baobao1225 6
  • Difference between 'at the next time point' and 'for 1 time unit'

    Difference between 'at the next time point' and 'for 1 time unit'

    Hi all,

    I want to know if the meaning of 'at the next time point' is equivalent to 'at the next time unit', that is, equivalent to 'for 1 time unit'.

    Thanks!

    opened by leesoons 4
  • Solver Error in Realizability Checking

    Solver Error in Realizability Checking

    Hi all,

    I'm experimenting with FRET, and running into trouble using the realizability checker. When I try to run the checker on a component, I only see "SOLVER ERROR," but no other output to help me diagnose the problem.

    I think I've installed all the dependencies, but it's possible something is misconfigured.

    Do you have any ideas for what I might try to narrow down the problem? That could be additional flags, debug print statements, etc.

    opened by abakst 4
  • Error

    Error "incompatible architecture (have (x86_64), need (arm64e))" trying to start FRET on an M1 machine

    On an Apple M1 machine I get the following error when trying to start the application:

    App threw an error during load
    Error: dlopen(/Users/thomasflinkow/Downloads/fret-2.3/fret-electron/app/node_modules/leveldown/build/Release/leveldown.node, 0x0001): tried: '/Users/thomasflinkow/Downloads/fret-2.3/fret-electron/app/node_modules/leveldown/build/Release/leveldown.node' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
        at process.func [as dlopen] (electron/js2c/asar_bundle.js:5:1812)
        at Object.Module._extensions..node (internal/modules/cjs/loader.js:1203:18)
        at Object.func [as .node] (electron/js2c/asar_bundle.js:5:1812)
        at Module.load (internal/modules/cjs/loader.js:992:32)
        at Module._load (internal/modules/cjs/loader.js:885:14)
        at Function.f._load (electron/js2c/asar_bundle.js:5:12633)
        at Module.require (internal/modules/cjs/loader.js:1032:19)
        at require (internal/modules/cjs/helpers.js:72:18)
        at load (/Users/thomasflinkow/Downloads/fret-2.3/fret-electron/app/node_modules/node-gyp-build/index.js:20:10)
        at Object.<anonymous> (/Users/thomasflinkow/Downloads/fret-2.3/fret-electron/app/node_modules/leveldown/binding.js:1:43)
    

    I have attached the full output of running npm start -dd in file start.txt.


    I have the required prerequisites installed:

    [email protected] fret-2.3 % node --version
    v16.16.0
    thomasflinko[email protected] fret-2.3 % python --version
    Python 3.10.6
    

    and the installation seems to be successful too (attached is a file installation.txt containing the output of running npm run fret-install -dd).


    I would appreciate any help in getting FRET to work on my machine and thank you in advance.

    Please let me know if you need any other information.

    opened by tflinkow 3
  • Unsuccessful Installation

    Unsuccessful Installation

    Hello, I got some unexpected error when I was trying to run an install of this application. My node version is 10.15.0, npm version is 6.4.1. I have tried both "npm run fret-install" and "npm run fret-reinstall". But None of them works.

    my Errol log and complete log are as follows [fret.log.txt](https://github.com/NASA-SW-Vn

    fret.log.txt

    2022-06-22T05_33_05_434Z-debug.log

    Thanks

    opened by Breeze822 3
  • Description of Flashing Light

    Description of Flashing Light

    Hello, I try to use fret to describe the following requirements:

    After the user presses the start button, the light flashing cycle begins, that is, the light L1 turns on and turns off after 1s; then the light L2 turns on and turns off after 1s; then the light L3 turns on and turns off after 1s; then the light L1 turns on... Keep going.

    Here is one idea for my case:

    • when start_btn the sys shall until stop_btn satisfy toggled_state=on.

    • In toggled mode the sys shall after 1 seconds satisfy !L1.

    • In toggled mode unless L1 the sys shall after 1 seconds satisfy !L2.

    • In toggled mode unless L2 the sys shall after 1 seconds satisfy !L3.

    • In toggled mode unless L3 the sys shall after 1 seconds satisfy !L1.

    (the toggled mode is associate with the toggled_state variable; start_btn and stop_btn are inputs, and L1/2/3 are outputs)

    But because of the semantic of unless, if L2 and L3 is false at the first point in toggled mode, the wrong behavior of toggled mode will be as follows: image

    I don’t know whether my understanding is wrong. Is there a valid description of this requirement ?

    I would appreciate it if you could give me an answer.

    opened by leesoons 3
  • Export requirements status field in json format

    Export requirements status field in json format

    I looked at the exported JSON file and I see that the status field is not present. I'd prefer to make the export feature more configurable with customizable fields to select in the export dialog. This would help the integration of FRET with other tools and also easy to filter requirements with approved status from those that are not.

    opened by ahmedwaqar 3
  • Update ltlsim_smvutils.c

    Update ltlsim_smvutils.c

    When NuSMV is downloaded, the file in the folder bin is "NuSMV", so it fails to find "nusmv" after including that folder in the PATH variable. Another option could be to look for both NuSMV and nusmv.

    opened by nchlpz 0
  • Variable Mapping Import

    Variable Mapping Import

    Hi,

    I'd like to be able to specify the variable mappings for a project/component to accompany the exported requirements, so that a user can import both & check realizability themselves without providing the mappings. However, I can't quite figure out how to use the 'Import' feature in the 'Variable Mapping' pane of the Analysis Portal.

    Thanks!

    opened by abakst 2
  • Repeated Requirements

    Repeated Requirements

    Hi all,

    I'm wondering if anyone has any ideas for how to effectively tackle the following problem. I have a system with several instances of a single type of subcomponent. If a single instance has, say, N requirements, then that means if I have C copies, I need to produce N*C requirements (almost identical, but changing some identifiers here and there, like X1, ...,XN.

    (You can imagine a system with N identical sensor units that all feed in to a single 'logic' subcomponent that makes some kind of decision based on these sensor values -- in this case you really need to talk about each sensor unit)

    I'm wondering if anyone can suggest a way that I might avoid so much repetition in providing the requirements, especially given that if changes are discovered later, they will have to be propagated to each near-duplicate requirement.

    As an example, one idea is to simplify give requirements for each type of component only (in the example above, just give the Nrequirements for a sensor unit, plus for a logic subcomponent with C inputs) . I think this would work, but then checking realizability wouldn't be checking the realizability of the composition of the C sensors and so on.

    I think the problem wouldn't be so much of an issue if there were an easy way to use a standard text editor to produce the requirements. I think the CSV format is close to this, but it seems importing the frettish sentences wraps them in quotes (e.g. as "FSM shall always Foo"), which means they don't get semantics generated for them.

    Thanks!

    opened by abakst 4
  • Two small changes in /tools/Scripts/Matlab/fret_IR.m

    Two small changes in /tools/Scripts/Matlab/fret_IR.m

    1. Comment out notice and disclaime;
    2. Add error message to fopen(), because sometimes it failed to create the file in my Ubuntu OS and Matlab gave me inaccurate error message.
    opened by xiayu3333 0
Releases(v2.5)
  • v2.5(Dec 2, 2022)

    What is new in FRET v2.5

    Realizability checking:

    • Users can now simulate realizable requirements. Currently this action is available only when using the JKind engine option. An example execution trace that satisfies all requirements is provided as additional feedback.

    Requirements Formalization:

    • A period can now be used at the end of a requirement sentence.
    • Improved message returned to the users when the requirement is in free form (quoted), stating that it will not be formalized.
    Source code(tar.gz)
    Source code(zip)
  • v2.4(Oct 6, 2022)

    What is new in FRET v2.4

    Realizability checking:

    • Users can now save and load realizability checking and diagnosis reports using the graphical interface.
    • Extended the interface to allow selection of subsets of requirements in a given system component.
    • Changed default realizability checking engine to Kind 2.

    Requirements Formalization:

    • Fixed handling of Boolean constants in FRETish.
    • Predicate preBool is now properly mapped to temporal operators Y or Z, depending on the initial value.
    Source code(tar.gz)
    Source code(zip)
  • v2.3(Aug 25, 2022)

    What is new in FRET v2.3

    Requirement editor:

    • Added node script (npm run ext) for running requirement editor as standalone tool to facilitate integration with external tools.
    • Extended editor to support identifiers with periods, percents, and double-quotes.
    • Fixed translation of xor, equivalence, and mod operators.

    Generation of analysis code and realizability checking:

    • Added predefined auxiliary functions for Lustre code generation (e.g., absolute value, min, max).
    Source code(tar.gz)
    Source code(zip)
  • v2.2(Jul 29, 2022)

    What is new in FRET v2.2

    Requirement semantics:

    • Extended the requirements assistant to display multiple formalizations.

    Installation & Infrastructure:

    • Updated dependencies: FRET now works with both Python 2.x and 3.x.
    • Upgraded node to v16.

    Regression testing:

    • Added support for testing with the playwright framework.
    Source code(tar.gz)
    Source code(zip)
  • v2.1(Jul 29, 2022)

    What is new in FRET v2.1

    Analysis portal:

    • Integrated FRET with the Kind 2 analysis tool for checking realizability;
    • Connected realizability analysis with LTLSIM for simulation of conflicting requirements in unrealizable specifications.

    LTLSIM:

    • Significantly extended the simulator to handle non-boolean variables, to show multiple requirements and to load/save execution traces.

    FRET language:

    • Added predicates that express temporal conditions, such as persisted(3 ticks, too_hot).
    • Added predicates that refer to the previous value of a variable, such as preInt(0, velocity).
    • See the FRET manual section on temporal conditions.
    Source code(tar.gz)
    Source code(zip)
  • v2.0(Aug 17, 2021)

    Features introduced by FRET 2.0:

    • Revamped analysis portal:

      1. Realizability Tab supports: monolithic and compositional realizability analysis; diagnosis, counterexample generation, and visualization of conflicting requirements.
      2. Variable Mapping Tab features: improved Variable Mapping interface; generation and export of verification code for the runtime monitoring of C code through the NASA Langley Copilot tool.
    • Improved Requirements editing:

      1. Template selection introduces a boilerplate FRETish sentence in the editor, to be completed by user. Predefined templates are available, but project-specific templates can also be programmed by FRET users.
      2. Glossary displays existing variable names in project, and enables autofill of variable names in requirements editor.
      3. Status flag helps book keeping for large projects; signifies requirements in progress, completed, requiring attention, etc.
    • Importing / Exporting news:

      1. Added support for importing legacy requirements in .csv format.
      2. Export functionality extended to allow exporting requirements per project.
    • Installation & Infrastructure:

      1. Updated dependencies to be compatible with node version 14 and material-ui 4.x
      2. Optimized database structure and provided support for legacy FRET databases.
    • LTLSIM simulator:

      1. Updated the UI to show the FRETish requirement text and include tooltips for the formalizations
    • User Manual:

      1. Significantly improved, and extended with detailed documentation of all the new features in FRET manual.
    Source code(tar.gz)
    Source code(zip)
Owner
NASA - Software V&V
NASA - Software Verification and Validation
NASA - Software V&V
Baseline and template code for node21 detection track

Nodule Detection Algorithm This codebase implements a baseline model, Faster R-CNN, for the nodule detection track in NODE21. It contains all necessar

node21challenge 11 Jan 15, 2022
A large-scale video dataset for the training and evaluation of 3D human pose estimation models

ASPset-510 ASPset-510 (Australian Sports Pose Dataset) is a large-scale video dataset for the training and evaluation of 3D human pose estimation mode

Aiden Nibali 36 Oct 30, 2022
Neural Point-Based Graphics

Neural Point-Based Graphics Project   Video   Paper Neural Point-Based Graphics Kara-Ali Aliev1 Artem Sevastopolsky1,2 Maria Kolos1,2 Dmitry Ulyanov3

Ali Aliev 252 Dec 13, 2022
PyTorch implementation of SimSiam: Exploring Simple Siamese Representation Learning

SimSiam: Exploring Simple Siamese Representation Learning This is a PyTorch implementation of the SimSiam paper: @Article{chen2020simsiam, author =

Facebook Research 834 Dec 30, 2022
Apollo optimizer in tensorflow

Apollo Optimizer in Tensorflow 2.x Notes: Warmup is important with Apollo optimizer, so be sure to pass in a learning rate schedule vs. a constant lea

Evan Walters 1 Nov 09, 2021
Multi-agent reinforcement learning algorithm and environment

Multi-agent reinforcement learning algorithm and environment [en/cn] Pytorch implements multi-agent reinforcement learning algorithms including IQL, Q

万鲲鹏 7 Sep 20, 2022
Training vision models with full-batch gradient descent and regularization

Stochastic Training is Not Necessary for Generalization -- Training competitive vision models without stochasticity This repository implements trainin

Jonas Geiping 32 Jan 06, 2023
Roadmap to becoming a machine learning engineer in 2020

Roadmap to becoming a machine learning engineer in 2020, inspired by web-developer-roadmap.

Chris Hoyean Song 1.7k Dec 29, 2022
Data loaders and abstractions for text and NLP

torchtext This repository consists of: torchtext.datasets: The raw text iterators for common NLP datasets torchtext.data: Some basic NLP building bloc

3.2k Jan 08, 2023
Unofficial implementation of MUSIQ (Multi-Scale Image Quality Transformer)

MUSIQ: Multi-Scale Image Quality Transformer Unofficial pytorch implementation of the paper "MUSIQ: Multi-Scale Image Quality Transformer" (paper link

41 Jan 02, 2023
Official implementation of the ICLR 2021 paper

You Only Need Adversarial Supervision for Semantic Image Synthesis Official PyTorch implementation of the ICLR 2021 paper "You Only Need Adversarial S

Bosch Research 272 Dec 28, 2022
Implementation for Curriculum DeepSDF

Curriculum-DeepSDF This repository is an implementation for Curriculum DeepSDF. Full paper is available here. Preparation Please follow original setti

Haidong Zhu 69 Dec 29, 2022
The official PyTorch code for 'DER: Dynamically Expandable Representation for Class Incremental Learning' accepted by CVPR2021

DER.ClassIL.Pytorch This repo is the official implementation of DER: Dynamically Expandable Representation for Class Incremental Learning (CVPR 2021)

rhyssiyan 108 Jan 01, 2023
Official repository for "Deep Recurrent Neural Network with Multi-scale Bi-directional Propagation for Video Deblurring".

RNN-MBP Deep Recurrent Neural Network with Multi-scale Bi-directional Propagation for Video Deblurring (AAAI-2022) by Chao Zhu, Hang Dong, Jinshan Pan

SIV-LAB 22 Aug 31, 2022
Keyword spotting on Arm Cortex-M Microcontrollers

Keyword spotting for Microcontrollers This repository consists of the tensorflow models and training scripts used in the paper: Hello Edge: Keyword sp

Arm Software 1k Dec 30, 2022
Code and model benchmarks for "SEVIR : A Storm Event Imagery Dataset for Deep Learning Applications in Radar and Satellite Meteorology"

NeurIPS 2020 SEVIR Code for paper: SEVIR : A Storm Event Imagery Dataset for Deep Learning Applications in Radar and Satellite Meteorology Requirement

USAF - MIT Artificial Intelligence Accelerator 46 Dec 15, 2022
Code and data for the paper "Hearing What You Cannot See"

Hearing What You Cannot See: Acoustic Vehicle Detection Around Corners Public repository of the paper "Hearing What You Cannot See: Acoustic Vehicle D

TU Delft Intelligent Vehicles 26 Jul 13, 2022
Semi-supervised Domain Adaptation via Minimax Entropy

Semi-supervised Domain Adaptation via Minimax Entropy (ICCV 2019) Install pip install -r requirements.txt The code is written for Pytorch 0.4.0, but s

Vision and Learning Group 243 Jan 09, 2023
This repository contains the DendroMap implementation for scalable and interactive exploration of image datasets in machine learning.

DendroMap DendroMap is an interactive tool to explore large-scale image datasets used for machine learning. A deep understanding of your data can be v

DIV Lab 33 Dec 30, 2022
Code for testing various M1 Chip benchmarks with TensorFlow.

M1, M1 Pro, M1 Max Machine Learning Speed Test Comparison This repo contains some sample code to benchmark the new M1 MacBooks (M1 Pro and M1 Max) aga

Daniel Bourke 348 Jan 04, 2023