Skip to main content

Linter for FO-dot, used in the IDP-Z3 system

Project description

FOLint

FOLint is a linting tool for FO(·). Its functionality can be split up in four parts:

  • Detection of syntax errors
  • Detection of type errors
  • Detection of typical formalization errors
  • Enforcing a style guide

This project was initially started by Lars Vermeulen during his master thesis: https://github.com/larsver/folint

Installation

pip install folint

CLI usage

folint file.idp

FOLint in editors

FOLint can be integrated in many editors. A collection of guides are kept in the folint-in-editors folder.

Build new version

python setup.py bdist_wheel sdist

Don't forget to update the version number of FOLint + the version number of IDP in the dependency!

Appendix: Full list of functionality

For a full list, see "Vermeulen, L. (2022). Statische Code Analyse voor FO(·). KU Leuven. Faculteit Industriële Ingenieurswetenschappen."

Type Checking

  • Typing of comparisons (f = g, f > g, …)
  • Typing of mathematical operators (x + y, x - y, …)
  • Warning for untyped quantifiers
  • Verifying the types of the elements in symbol interpretations

Common mistake checking

  • Warning when using a conjunction with universal quantification (e.g., !x in Person: age(x) > 18 & adult(x))
  • Warning when using an implication with existential quantification (e.g., ?x in Person: driving_license(x) => sober(x))
  • Worning when variable is only on one side of an equivalence (e.g., !x,y: phi(x) <=> psi(x, y))

Style guide

  • Use brackets with negated in statement
  • Warn against redundant brackets
  • Naming conventions: Type starting with capital letter, other symbols in snake_case
  • Highlight unused quantification variables
  • Warn when not using pretty_print

Other

  • Wrong number of arguments for predicate/function
  • Wrong number of arguments for model_check or using unknown block names
  • Checking if types are defined in voc or struct
  • Checking totality of functions
  • Checking for duplicate entries in interpretations
  • Checking corretness of entries in interpretations
  • Other minor linting such as "no double spaces", "spaces around connectives", ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

folint-1.1.0.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

folint-1.1.0-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file folint-1.1.0.tar.gz.

File metadata

  • Download URL: folint-1.1.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.7

File hashes

Hashes for folint-1.1.0.tar.gz
Algorithm Hash digest
SHA256 e552d47925481c31af7d6a8aaf87f13b3239899ef93701e407bfd345e67be943
MD5 73d65610bcaae47f544db0dffb6f69f5
BLAKE2b-256 d8b91713fe707a2afd71221be1ec2adeffc1e2b9a4ca254f4377d2a714e1ec07

See more details on using hashes here.

File details

Details for the file folint-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: folint-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.7

File hashes

Hashes for folint-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a9278cc924b78a4e45b821dc70aa0e1a904f3caa85ed63e1c7167d1e81dd084
MD5 7d96f217a6f3d5d011e013aa5d173447
BLAKE2b-256 216bef6426d3078b92d8cd9650dd017af2654a6d787ea76043ee852961b14418

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page