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
DAFNe: A One-Stage Anchor-Free Deep Model for Oriented Object Detection

DAFNe: A One-Stage Anchor-Free Deep Model for Oriented Object Detection Code for our Paper DAFNe: A One-Stage Anchor-Free Deep Model for Oriented Obje

Steven Lang 58 Dec 19, 2022
zeus is a Python implementation of the Ensemble Slice Sampling method.

zeus is a Python implementation of the Ensemble Slice Sampling method. Fast & Robust Bayesian Inference, Efficient Markov Chain Monte Carlo (MCMC), Bl

Minas Karamanis 197 Dec 04, 2022
MoCoGAN: Decomposing Motion and Content for Video Generation

MoCoGAN: Decomposing Motion and Content for Video Generation This repository contains an implementation and further details of MoCoGAN: Decomposing Mo

Sergey Tulyakov 514 Dec 18, 2022
Adversarial Graph Augmentation to Improve Graph Contrastive Learning

ADGCL : Adversarial Graph Augmentation to Improve Graph Contrastive Learning Introduction This repo contains the Pytorch [1] implementation of Adversa

susheel suresh 62 Nov 19, 2022
A strongly-typed genetic programming framework for Python

monkeys "If an army of monkeys were strumming on typewriters they might write all the books in the British Museum." monkeys is a framework designed to

H. Chase Stevens 115 Nov 27, 2022
Pyramid addon for OpenAPI3 validation of requests and responses.

Validate Pyramid views against an OpenAPI 3.0 document Peace of Mind The reason this package exists is to give you peace of mind when providing a REST

Pylons Project 79 Dec 30, 2022
Code for Subgraph Federated Learning with Missing Neighbor Generation (NeurIPS 2021)

To run the code Unzip the package to your local directory; Run 'pip install -r requirements.txt' to download required packages; Open file ~/nips_code/

32 Dec 26, 2022
Official Pytorch implementation of "Beyond Static Features for Temporally Consistent 3D Human Pose and Shape from a Video", CVPR 2021

TCMR: Beyond Static Features for Temporally Consistent 3D Human Pose and Shape from a Video Qualtitative result Paper teaser video Introduction This r

Hongsuk Choi 215 Jan 06, 2023
[ICML 2021] Towards Understanding and Mitigating Social Biases in Language Models

Towards Understanding and Mitigating Social Biases in Language Models This repo contains code and data for evaluating and mitigating bias from generat

Paul Liang 42 Jan 03, 2023
Cupytorch - A small framework mimics PyTorch using CuPy or NumPy

CuPyTorch CuPyTorch是一个小型PyTorch,名字来源于: 不同于已有的几个使用NumPy实现PyTorch的开源项目,本项目通过CuPy支持

Xingkai Yu 23 Aug 17, 2022
This repo provides the source code & data of our paper "GreaseLM: Graph REASoning Enhanced Language Models"

GreaseLM: Graph REASoning Enhanced Language Models This repo provides the source code & data of our paper "GreaseLM: Graph REASoning Enhanced Language

137 Jan 02, 2023
PyTorch implementation of MoCo: Momentum Contrast for Unsupervised Visual Representation Learning

MoCo: Momentum Contrast for Unsupervised Visual Representation Learning This is a PyTorch implementation of the MoCo paper: @Article{he2019moco, aut

Meta Research 3.7k Jan 02, 2023
Repo 4 basic seminar §How to make human machine readable"

WORK IN PROGRESS... Notebooks from the Seminar: Human Machine Readable WS21/22 Introduction into programming Georg Trogemann, Christian Heck, Mattis

experimental-informatics 3 May 29, 2022
The repository offers the official implementation of our BMVC 2021 paper in PyTorch.

CrossMLP Cascaded Cross MLP-Mixer GANs for Cross-View Image Translation Bin Ren1, Hao Tang2, Nicu Sebe1. 1University of Trento, Italy, 2ETH, Switzerla

Bingoren 16 Jul 27, 2022
OpenLT: An open-source project for long-tail classification

OpenLT: An open-source project for long-tail classification Supported Methods for Long-tailed Recognition: Cross-Entropy Loss Focal Loss (ICCV'17) Cla

Ming Li 37 Sep 15, 2022
Deep Two-View Structure-from-Motion Revisited

Deep Two-View Structure-from-Motion Revisited This repository provides the code for our CVPR 2021 paper Deep Two-View Structure-from-Motion Revisited.

Jianyuan Wang 145 Jan 06, 2023
PyTorch EO aims to make Deep Learning for Earth Observation data easy and accessible to real-world cases and research alike.

Pytorch EO Deep Learning for Earth Observation applications and research. 🚧 This project is in early development, so bugs and breaking changes are ex

earthpulse 28 Aug 25, 2022
Web-interface + rest API for classification and regression (https://jeff1evesque.github.io/machine-learning.docs)

Machine Learning This project provides a web-interface, as well as a programmatic-api for various machine learning algorithms. Supported algorithms: S

Jeff Levesque 252 Dec 11, 2022
Calculates carbon footprint based on fuel mix and discharge profile at the utility selected. Can create graphs and tabular output for fuel mix based on input file of series of power drawn over a period of time.

carbon-footprint-calculator Conda distribution ~/anaconda3/bin/conda install anaconda-client conda-build ~/anaconda3/bin/conda config --set anaconda_u

Seattle university Renewable energy research 7 Sep 26, 2022
Effective Use of Transformer Networks for Entity Tracking

Effective Use of Transformer Networks for Entity Tracking (EMNLP19) This is a PyTorch implementation of our EMNLP paper on the effectiveness of pre-tr

5 Nov 06, 2021