Overview of directories and files

  • doc/: documentation in ReStructured Text format
    • doc/README.md: introduction to the user manual and guidelines
  • editors/: editor plugins for handling Lambdapi files
    • emacs/: code for Emacs
    • vim/: code for Vim
    • vscode/: code for VSCode
      • .vscode/*.json: config for launching and debugging the extension
      • lp.configuration.json: specific characters
      • media/styles.css: styles
      • package.json: manifest of the plugin (activation events, scripts, dependencies, …)
      • snippets/unicode.json: short-cuts for entering unicode characters
      • src/*.ts: source code of the extension
      • syntaxes/lp.tmLanguage.json: grammar of Lambdapi
      • tsconfig.json: TypeScript configuration (directories, …)
  • libraries/: libraries of Dedukti files (see Makefile)
  • src/cli/: command line interface
    • config.ml: main program configuration
    • init.ml: lambdapi init command
    • install.ml: lambdapi install command
    • lambdapi.ml: main program
  • src/common/: miscellaneous modules and libraries
    • console.ml: flag management
    • debug.ml: debugging tools
    • error.ml: warning and error management
    • escape.ml: basic functions on escaped identifiers
    • library.ml: Lambdapi library management
    • logger.ml: logging tools
    • path.ml: module paths in the Lambdapi library
    • pos.ml: source file position management
  • src/core/: core of Lambdapi
    • terms:
      • term.ml: internal representation of terms
      • libTerm.ml: basic operations on terms
      • libMeta.ml: basic operations on metavariables
      • print.ml: pretty printing of terms
      • env.ml: maps identifier -> variable and type
    • signatures:
      • builtin.ml: managing builtins
      • sign.ml: compiled module signature (symbols and rules in a module)
      • sig_state.ml: signature under construction
    • rewriting:
      • tree_type.ml: types and basic functions for decision trees
      • tree.ml: compilation of rewriting rules to decision trees
      • eval.ml: rewriting engine
    • type inference/checking:
      • ctxt.ml: typing contexts (maps variable -> type)
      • infer.ml: constraints generating type inference and checking
    • unification:
      • unif_rule.ml: ghost signature for unification rules
      • unif.ml: unification algorithm
      • inverse.ml: inverse of injective functions
  • src/handle: signature building
    • command.ml: command handling
    • compile.ml: file parsing and compiling (.lpo files)
    • inductive.ml: generation of induction principles
    • query.ml: handling of queries (commands that do not change the signature or the proof state)
    • tactics:
      • proof.ml: proof state
      • rewrite.ml: rewrite tactic (similar to Ssreflect)
      • tactic.ml: tactic handling
      • why3_tactic.ml: why3 tactic
  • src/lplib/: extension of the Ocaml standard library
    • range_intf.ml: module type of abstract intervals
    • rangeMap_intf.ml: module type of abstract maps on intervals
    • rangeMap.ml: instance of rangeMap_intf using range
    • range.ml: instance of range_intf with integer intervals
    • realpath.c: C implementation of Filename.realpath
  • src/lsp/: LSP server
    • lp_doc.ml: document type
    • lp_lsp.ml: LSP server
    • lsp_base.ml: basic functions for building messages
    • lsp_io.ml: basic functions for reading and sending messages
  • src/parsing/: parsing Dedukti and Lambdapi files
    • pkg file parsing;
      • package.ml: parsing of package files lambdapi.pkg
    • abstract syntax:
      • syntax.ml: abstract syntax
    • dk file parsing:
      • dkBasic.ml: basic definitions for dk parsing
      • dkTokens.ml: lexing tokens for dk syntax
      • dkLexer.mll: lexer for dk syntax
      • dkRule.ml: convert dk rules into lp rules
      • dkParser.mly: parser for dk syntax
    • lp file parsing:
      • lpLexer.ml: lexer for Lambdapi syntax
      • lpParser.mly: parser for Lambdapi syntax
      • parser.ml: interfaces for parsers
      • pretty.ml: pretty print the abstract syntax (used to convert Dedukti files into Lambdapi files)
    • scoping:
      • pratt.ml: parsing of applications wrt symbol notations
      • scope.ml: convert the abstract syntax into terms
  • src/pure/: pure interface (mainly used by the LSP server)
    • pure.ml: provide utilities to roll back the state
  • src/tool/: tools
    • external.ml: call of external tools
    • hrs.ml: export to the .hrs format of the confluence competition
    • sr.ml: algorithm for checking subject reduction
    • tree_graphviz.ml: representation of trees as graphviz files
    • xtc.ml: export to the .xtc format of the termination competition
  • tests/: unit tests
    • OK/: tests that should succeed
    • KO/: tests that should fail
  • misc/:
    • gen_version.ml: script used by dune to generate _build/default/src/core/version.ml used in lambdapi.ml
    • sanity_check.sh: script checking some style guidelines below (called by make sanity_check)
    • generate_tests.ml: creates test files in tests/OK that can be parametrised
    • listings.tex: setup of the LaTeX package listings for including Lambdapi code into a LaTeX document
    • deps.ml: gives the #REQUIRE commands that should be added at the beginning of a Dedukti file