Copyright Sven-Olof Nyström 2017, 2018. scfa - an implementation of symmetric control flow analysis. Directories: src - source files test - test files example - example files scripts - various scripts To build, set current directory to src and run make. The make file will put all beam files in the directory ../ebin. You need to make sure that Erlang finds them. One way is to use the Erlang command code:add_path("../ebin/"). To test: compile the file ../test/test_scfa.erl and load it. You can now run: test_scfa:good(["../test/good"]). to test type checking of programs where type checking is expected to succeed and test_scfa:bad(["../test/bad"]). to test type checking of programs where type checking is expected to fail. Modules of the type checker can be checked with, say poly:top(filter, ["."], [simplify, verbose, prefer_spec, time]). or poly:top(walker, ["."], [simplify, verbose, prefer_spec, time]). (I.e, to check module "filter", use current directory and a source directory as path. Options are discussed below.) Some options: - simplify simplify constraints to make type checking go faster - verbose more output, for example which source files were read - prefer_spec when both Erlang code and a specification is available for a function, use the specification.) - time measure time for type checking - predicates output a representation of the predicates generated for the program and specification. Only use this for small programs.