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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e552d47925481c31af7d6a8aaf87f13b3239899ef93701e407bfd345e67be943 |
|
MD5 | 73d65610bcaae47f544db0dffb6f69f5 |
|
BLAKE2b-256 | d8b91713fe707a2afd71221be1ec2adeffc1e2b9a4ca254f4377d2a714e1ec07 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a9278cc924b78a4e45b821dc70aa0e1a904f3caa85ed63e1c7167d1e81dd084 |
|
MD5 | 7d96f217a6f3d5d011e013aa5d173447 |
|
BLAKE2b-256 | 216bef6426d3078b92d8cd9650dd017af2654a6d787ea76043ee852961b14418 |