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
Official implementation of "Refiner: Refining Self-attention for Vision Transformers".

RefinerViT This repo is the official implementation of "Refiner: Refining Self-attention for Vision Transformers". The repo is build on top of timm an

101 Dec 29, 2022
Official PyTorch Implementation of HELP: Hardware-adaptive Efficient Latency Prediction for NAS via Meta-Learning (NeurIPS 2021 Spotlight)

[NeurIPS 2021 Spotlight] HELP: Hardware-adaptive Efficient Latency Prediction for NAS via Meta-Learning [Paper] This is Official PyTorch implementatio

42 Nov 01, 2022
Data Engineering ZoomCamp

Data Engineering ZoomCamp I'm partaking in a Data Engineering Bootcamp / Zoomcamp and will be tracking my progress here. I can't promise these notes w

Aaron 61 Jan 06, 2023
Discerning Decision-Making Process of Deep Neural Networks with Hierarchical Voting Transformation

Configurations Change HOME_PATH in CONFIG.py as the current path Data Prepare CENSINCOME Download data Put census-income.data and census-income.test i

2 Aug 14, 2022
CONditionals for Ordinal Regression and classification in PyTorch

CONDOR pytorch implementation for ordinal regression with deep neural networks. Documentation: https://GarrettJenkinson.github.io/condor_pytorch About

7 Jul 25, 2022
Code related to the manuscript "Averting A Crisis In Simulation-Based Inference"

Abstract We present extensive empirical evidence showing that current Bayesian simulation-based inference algorithms are inadequate for the falsificat

Montefiore Artificial Intelligence Research 3 Nov 14, 2022
Pytorch Implementations of large number classical backbone CNNs, data enhancement, torch loss, attention, visualization and some common algorithms.

Torch-template-for-deep-learning Pytorch implementations of some **classical backbone CNNs, data enhancement, torch loss, attention, visualization and

Li Shengyan 270 Dec 31, 2022
Instance-based label smoothing for improving deep neural networks generalization and calibration

Instance-based Label Smoothing for Neural Networks Pytorch Implementation of the algorithm. This repository includes a new proposed method for instanc

Mohamed Maher 1 Aug 13, 2022
This is the repo for Uncertainty Quantification 360 Toolkit.

UQ360 The Uncertainty Quantification 360 (UQ360) toolkit is an open-source Python package that provides a diverse set of algorithms to quantify uncert

International Business Machines 207 Dec 30, 2022
Scripts and a shader to get you started on setting up an exported Koikatsu character in Blender.

KK Blender Shader Pack A plugin and a shader to get you started with setting up an exported Koikatsu character in Blender. The plugin is a Blender add

166 Jan 01, 2023
PyTorch ,ONNX and TensorRT implementation of YOLOv4

PyTorch ,ONNX and TensorRT implementation of YOLOv4

4.2k Jan 01, 2023
RL-GAN: Transfer Learning for Related Reinforcement Learning Tasks via Image-to-Image Translation

RL-GAN: Transfer Learning for Related Reinforcement Learning Tasks via Image-to-Image Translation RL-GAN is an official implementation of the paper: T

42 Nov 10, 2022
Defense-GAN: Protecting Classifiers Against Adversarial Attacks Using Generative Models (published in ICLR2018)

Defense-GAN: Protecting Classifiers Against Adversarial Attacks Using Generative Models Pouya Samangouei*, Maya Kabkab*, Rama Chellappa [*: authors co

Maya Kabkab 212 Dec 07, 2022
Vertex AI: Serverless framework for MLOPs (ESP / ENG)

Vertex AI: Serverless framework for MLOPs (ESP / ENG) Español Qué es esto? Este repo contiene un pipeline end to end diseñado usando el SDK de Kubeflo

Hernán Escudero 2 Apr 28, 2022
A package for "Procedural Content Generation via Reinforcement Learning" OpenAI Gym interface.

Readme: Illuminating Diverse Neural Cellular Automata for Level Generation This is the codebase used to generate the results presented in the paper av

Sam Earle 27 Jan 05, 2023
A high-performance Python-based I/O system for large (and small) deep learning problems, with strong support for PyTorch.

WebDataset WebDataset is a PyTorch Dataset (IterableDataset) implementation providing efficient access to datasets stored in POSIX tar archives and us

1.1k Jan 08, 2023
FANet - Real-time Semantic Segmentation with Fast Attention

FANet Real-time Semantic Segmentation with Fast Attention Ping Hu, Federico Perazzi, Fabian Caba Heilbron, Oliver Wang, Zhe Lin, Kate Saenko , Stan Sc

Ping Hu 42 Nov 30, 2022
Implementation for paper "Towards the Generalization of Contrastive Self-Supervised Learning"

Contrastive Self-Supervised Learning on CIFAR-10 Paper "Towards the Generalization of Contrastive Self-Supervised Learning", Weiran Huang, Mingyang Yi

Weiran Huang 13 Nov 30, 2022
Segmentation for medical image.

EfficientSegmentation Introduction EfficientSegmentation is an open source, PyTorch-based segmentation framework for 3D medical image. Features A whol

68 Nov 28, 2022
SpecAugmentPyTorch - A Pytorch (support batch and channel) implementation of GoogleBrain's SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition

SpecAugment An implementation of SpecAugment for Pytorch How to use Install pytorch, version=1.9.0 (new feature (torch.Tensor.take_along_dim) is used

IMLHF 3 Oct 11, 2022