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.0.9.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

folint-1.0.9-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for folint-1.0.9.tar.gz
Algorithm Hash digest
SHA256 5f06f8247745b61d7aafbce85fc0c2f7cf12c598d57b014b652a3f83feb0c2b7
MD5 3ee35d8db160c108f16ca31ed8d41ae8
BLAKE2b-256 8615e6c3db9f501dbf857ca5eb03dba65574c77694d293086fc33167ec19eeb2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for folint-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c79ca52eb9c92ff82d30ad369c64eacd9a752f4a1f22dd5d04d5cd87630d06ea
MD5 049c4ca7a7c417f116d24fee4973834e
BLAKE2b-256 55827a34f5ef42779842c4a191d5c0584e33c2f983b86e03805fb2392c3fc370

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