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
Efficient and intelligent interactive segmentation annotation software

Efficient and intelligent interactive segmentation annotation software

294 Dec 30, 2022
Readings for "A Unified View of Relational Deep Learning for Polypharmacy Side Effect, Combination Therapy, and Drug-Drug Interaction Prediction."

Polypharmacy - DDI - Synergy Survey The Survey Paper This repository accompanies our survey paper A Unified View of Relational Deep Learning for Polyp

AstraZeneca 79 Jan 05, 2023
Code for 'Self-Guided and Cross-Guided Learning for Few-shot segmentation. (CVPR' 2021)'

SCL Introduction Code for 'Self-Guided and Cross-Guided Learning for Few-shot segmentation. (CVPR' 2021)' We evaluated our approach using two baseline

34 Oct 08, 2022
MacroTools provides a library of tools for working with Julia code and expressions.

MacroTools.jl MacroTools provides a library of tools for working with Julia code and expressions. This includes a powerful template-matching system an

FluxML 278 Dec 11, 2022
The repo contains the code to train and evaluate a system which extracts relations and explanations from dialogue.

The repo contains the code to train and evaluate a system which extracts relations and explanations from dialogue. How do I cite D-REX? For now, cite

Alon Albalak 6 Mar 31, 2022
NLMpy - A Python package to create neutral landscape models

NLMpy is a Python package for the creation of neutral landscape models that are widely used by landscape ecologists to model ecological patterns

Manaaki Whenua – Landcare Research 1 Oct 08, 2022
This is a Pytorch implementation of paper: DropEdge: Towards Deep Graph Convolutional Networks on Node Classification

DropEdge: Towards Deep Graph Convolutional Networks on Node Classification This is a Pytorch implementation of paper: DropEdge: Towards Deep Graph Con

401 Dec 16, 2022
Official TensorFlow code for the forthcoming paper

~ Efficient-CapsNet ~ Are you tired of over inflated and overused convolutional neural networks? You're right! It's time for CAPSULES :)

Vittorio Mazzia 203 Jan 08, 2023
Efficient Deep Learning Systems course

Efficient Deep Learning Systems This repository contains materials for the Efficient Deep Learning Systems course taught at the Faculty of Computer Sc

Max Ryabinin 173 Dec 29, 2022
Official PyTorch implementation of "ArtFlow: Unbiased Image Style Transfer via Reversible Neural Flows"

ArtFlow Official PyTorch implementation of the paper: ArtFlow: Unbiased Image Style Transfer via Reversible Neural Flows Jie An*, Siyu Huang*, Yibing

123 Dec 27, 2022
Our implementation used for the MICCAI 2021 FLARE Challenge titled 'Efficient Multi-Organ Segmentation Using SpatialConfiguartion-Net with Low GPU Memory Requirements'.

Efficient Multi-Organ Segmentation Using SpatialConfiguartion-Net with Low GPU Memory Requirements Our implementation used for the MICCAI 2021 FLARE C

Franz Thaler 3 Sep 27, 2022
CARMS: Categorical-Antithetic-REINFORCE Multi-Sample Gradient Estimator

CARMS: Categorical-Antithetic-REINFORCE Multi-Sample Gradient Estimator This is the official code repository for NeurIPS 2021 paper: CARMS: Categorica

Alek Dimitriev 1 Jul 09, 2022
This is the official Pytorch implementation of the paper "Diverse Motion Stylization for Multiple Style Domains via Spatial-Temporal Graph-Based Generative Model"

Diverse Motion Stylization (Official) This is the official Pytorch implementation of this paper. Diverse Motion Stylization for Multiple Style Domains

Soomin Park 28 Dec 16, 2022
Writeups for the challenges from DownUnderCTF 2021

cloud Challenge Author Difficulty Release Round Bad Bucket Blue Alder easy round 1 Not as Bad Bucket Blue Alder easy round 1 Lost n Found Blue Alder m

DownUnderCTF 161 Dec 31, 2022
PyTorch implementation of NeurIPS 2021 paper: "CoFiNet: Reliable Coarse-to-fine Correspondences for Robust Point Cloud Registration"

CoFiNet: Reliable Coarse-to-fine Correspondences for Robust Point Cloud Registration (NeurIPS 2021) PyTorch implementation of the paper: CoFiNet: Reli

76 Jan 03, 2023
Detectorch - detectron for PyTorch

Detectorch - detectron for PyTorch (Disclaimer: this is work in progress and does not feature all the functionalities of detectron. Currently only inf

Ignacio Rocco 558 Dec 23, 2022
A simple rest api that classifies pneumonia infection weather it is Normal, Pneumonia Virus or Pneumonia Bacteria from a chest-x-ray image.

This is a simple rest api that classifies pneumonia infection weather it is Normal, Pneumonia Virus or Pneumonia Bacteria from a chest-x-ray image.

crispengari 3 Jan 08, 2022
A PyTorch Implementation of Gated Graph Sequence Neural Networks (GGNN)

A PyTorch Implementation of GGNN This is a PyTorch implementation of the Gated Graph Sequence Neural Networks (GGNN) as described in the paper Gated G

Ching-Yao Chuang 427 Dec 13, 2022
A "gym" style toolkit for building lightweight Neural Architecture Search systems

A "gym" style toolkit for building lightweight Neural Architecture Search systems

Jack Turner 12 Nov 05, 2022
Pytorch implementation of CoCon: A Self-Supervised Approach for Controlled Text Generation

COCON_ICLR2021 This is our Pytorch implementation of COCON. CoCon: A Self-Supervised Approach for Controlled Text Generation (ICLR 2021) Alvin Chan, Y

alvinchangw 79 Dec 18, 2022