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
PyTorch implementation for Graph Contrastive Learning with Augmentations

Graph Contrastive Learning with Augmentations PyTorch implementation for Graph Contrastive Learning with Augmentations [poster] [appendix] Yuning You*

Shen Lab at Texas A&M University 382 Dec 15, 2022
Top #1 Submission code for the first https://alphamev.ai MEV competition with best AUC (0.9893) and MSE (0.0982).

alphamev-winning-submission Top #1 Submission code for the first alphamev MEV competition with best AUC (0.9893) and MSE (0.0982). The code won't run

70 Oct 29, 2022
Code for One-shot Talking Face Generation from Single-speaker Audio-Visual Correlation Learning (AAAI 2022)

One-shot Talking Face Generation from Single-speaker Audio-Visual Correlation Learning (AAAI 2022) Paper | Demo Requirements Python = 3.6 , Pytorch

FuxiVirtualHuman 84 Jan 03, 2023
Implementation of Wasserstein adversarial attacks.

Stronger and Faster Wasserstein Adversarial Attacks Code for Stronger and Faster Wasserstein Adversarial Attacks, appeared in ICML 2020. This reposito

21 Oct 06, 2022
Performance Analysis of Multi-user NOMA Wireless-Powered mMTC Networks: A Stochastic Geometry Approach

Performance Analysis of Multi-user NOMA Wireless-Powered mMTC Networks: A Stochastic Geometry Approach Thanh Luan Nguyen, Tri Nhu Do, Georges Kaddoum

Thanh Luan Nguyen 2 Oct 10, 2022
Tracking code for the winner of track 1 in the MMP-Tracking Challenge at ICCV 2021 Workshop.

Tracking Code for the winner of track1 in MMP-Trakcing challenge This repository contains our tracking code for the Multi-camera Multiple People Track

DamoCV 29 Nov 13, 2022
Sleep staging from ECG, assisted with EEG

Sleep_Staging_Knowledge Distillation This codebase implements knowledge distillation approach for ECG based sleep staging assisted by EEG based sleep

2 Dec 12, 2022
Personalized Federated Learning using Pytorch (pFedMe)

Personalized Federated Learning with Moreau Envelopes (NeurIPS 2020) This repository implements all experiments in the paper Personalized Federated Le

Charlie Dinh 226 Dec 30, 2022
Official codebase used to develop Vision Transformer, MLP-Mixer, LiT and more.

Big Vision This codebase is designed for training large-scale vision models on Cloud TPU VMs. It is based on Jax/Flax libraries, and uses tf.data and

Google Research 701 Jan 03, 2023
Match SafeGraph POIs with Data collected through a cultural resource survey in Washington DC.

Match SafeGraph POI data with Cultural Resource Places in Washington DC Match SafeGraph POIs with Data collected through a cultural resource survey in

Changjie Chen 1 Jan 05, 2022
Official implement of Paper:A deeply supervised image fusion network for change detection in high resolution bi-temporal remote sening images

A deeply supervised image fusion network for change detection in high resolution bi-temporal remote sensing images 深度监督影像融合网络DSIFN用于高分辨率双时相遥感影像变化检测 Of

Chenxiao Zhang 135 Dec 19, 2022
[ICCV'21] Official implementation for the paper Social NCE: Contrastive Learning of Socially-aware Motion Representations

CrowdNav with Social-NCE This is an official implementation for the paper Social NCE: Contrastive Learning of Socially-aware Motion Representations by

VITA lab at EPFL 125 Dec 23, 2022
Official PyTorch implementation of "Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB Image", ICCV 2019

PoseNet of "Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB Image" Introduction This repo is official Py

Gyeongsik Moon 677 Dec 25, 2022
Grad2Task: Improved Few-shot Text Classification Using Gradients for Task Representation

Grad2Task: Improved Few-shot Text Classification Using Gradients for Task Representation Prerequisites This repo is built upon a local copy of transfo

Jixuan Wang 10 Sep 28, 2022
CVPR2022 (Oral) - Rethinking Semantic Segmentation: A Prototype View

Rethinking Semantic Segmentation: A Prototype View Rethinking Semantic Segmentation: A Prototype View, Tianfei Zhou, Wenguan Wang, Ender Konukoglu and

Tianfei Zhou 239 Dec 26, 2022
This game was designed to encourage young people not to gamble on lotteries, as the probablity of correctly guessing the number is infinitesimal!

Lottery Simulator 2022 for Web Launch Application Developed by John Seong in Ontario. This game was designed to encourage young people not to gamble o

John Seong 2 Sep 02, 2022
FMA: A Dataset For Music Analysis

FMA: A Dataset For Music Analysis Michaël Defferrard, Kirell Benzi, Pierre Vandergheynst, Xavier Bresson. International Society for Music Information

Michaël Defferrard 1.8k Dec 29, 2022
Flexible Option Learning - NeurIPS 2021

Flexible Option Learning This repository contains code for the paper Flexible Option Learning presented as a Spotlight at NeurIPS 2021. The implementa

Martin Klissarov 7 Nov 09, 2022
A flexible framework of neural networks for deep learning

Chainer: A deep learning framework Website | Docs | Install Guide | Tutorials (ja) | Examples (Official, External) | Concepts | ChainerX Forum (en, ja

Chainer 5.8k Jan 06, 2023
Official PyTorch implementation for paper Context Matters: Graph-based Self-supervised Representation Learning for Medical Images

Context Matters: Graph-based Self-supervised Representation Learning for Medical Images Official PyTorch implementation for paper Context Matters: Gra

49 Nov 23, 2022