Skip to content
Snippets Groups Projects
Unverified Commit 182d098c authored by Sankalp Gambhir's avatar Sankalp Gambhir Committed by GitHub
Browse files

Readme cleanups and updates (#189)

* Update README

* Swap publications
parent 3923726f
No related branches found
No related tags found
No related merge requests found
# LISA = LISA Is Sets Automated # LISA = LISA Is Sets Automated
LISA is a Proof Assistant based on first order logic, sequent calculus and set theory. To get started, look at the [Reference Manual](Reference%20Manual/lisa.pdf). LISA is a proof assistant based on first-order logic, sequent calculus, and set
theory. To get started, take a look at the [Reference
Manual](Reference%20Manual/lisa.pdf).
EPFL-LARA Website: https://lara.epfl.ch/w/ LISA is developed and maintained by the [Laboratory for Automated Reasoning and
Analysis (LARA)](https://lara.epfl.ch) at the [EPFL](https://epfl.ch).
For details regarding the design of LISA and techniques implemented here, you
can check the following publications:
- Simon Guilloud, Sankalp Gambhir, and Viktor Kunčak. LISA - A Modern Proof
System. In 14th International Conference on Interactive Theorem Proving (ITP
2023). Leibniz International Proceedings in Informatics (LIPIcs), Volume 268,
pp. 17:1-17:19, Schloss Dagstuhl - Leibniz-Zentrum für Informatik (2023)
https://doi.org/10.4230/LIPIcs.ITP.2023.17
- Guilloud, S., Bucev, M., Milovančević, D., Kunčak, V. (2023). Formula
Normalizations in Verification. In: Enea, C., Lal, A. (eds) Computer Aided
Verification. CAV 2023. Lecture Notes in Computer Science, vol 13966.
Springer, Cham. https://doi.org/10.1007/978-3-031-37709-9_19
## Installation and utilisation ## Installation and utilisation
- You first need to [install Scala on your system](https://www.scala-lang.org/download/).
- Then, clone the presen project. - First, [install Scala 3 on your system per the official
- In the root folder, type `sbt`. instructions](https://www.scala-lang.org/download/). You should have obtained
- To execute a file in LISA's Mathematical Library, type `run` and select a file (try with `SetTheory.scala` first!). SBT will install missing packages and compile the project, and output the theorems of the file. Scala 3 and [SBT](https://www.scala-sbt.org/).
- To experiment with the system, type `project lisa-examples`. - Then, clone the present project.
- We recommand using VSCode or Intelliji to edit lisa code. Create a new file in the lisa-examples folder. You can use the file `Examples.scala` as a template. - In the root folder, run `sbt`.
- To execute a file in LISA's Mathematical Library, type `run` in the `sbt`
interactive console and select a main class to run when prompted (try with
`SetTheory.scala` first!).
- On the first run, SBT will install missing packages and compile the project,
and outputting the theorems proved in the chosen file.
- To experiment with the system, type `project lisa-examples`, and play around
with the examples in
[lisa-examples/src/main/scala/Example.scala](lisa-examples/src/main/scala/Example.scala),
or create your own file. You can start your own LISA file with the following
minimal header:
```scala
object MyLisaFile extends lisa.Main {
// your proofs go here
}
```
- We recommend using [Visual Studio Code](https://code.visualstudio.com/) with
the [Metals extension](https://scalameta.org/metals/) or [JetBrains IntelliJ
IDEA](https://www.jetbrains.com/idea/) to edit LISA code.
## Project Organisation ## Project Organisation
### Kernel ### Kernel
The kernel package contains the trusted code of LISA, in the sense that it only can produce theorem and verify proof. Any bug or error in code written outside this package should not possibly break soundness.
The kernel contains essentially two elements: Formalisation of First Order Logic, and Formalisation of Proofs through Sequent Calculus. The `lisa-kernel` package contains the trusted code of LISA, in the sense that
all theorems and proofs pass through it to be considered correct. It only can
produce theorems and verify proof. Any bug or error in code written outside this
package should not possibly break soundness.
The kernel essentially contains two elements: formalisation of first-order
logic, and formalisation of proofs through sequent calculus.
### Utils ### Utils
The utils package contains a set of utilities to interract with the kernel. Syntactic sugar, a parser and printer for proofs and formulas, interraction with tptp library, unification algorithms. The package also contains LISA's DSL to write proofs, tactics and mathematical developments.
## Commands The `lisa-utils` package contains a set of utilities to interact with the
kernel. Syntactic sugar, a parser and printer for proofs and formulas,
unification algorithms, among others. The package also contains LISA's DSL to
write proofs, tactics, and mathematical developments.
Most user-developed tactics, syntax, and auxiliary utilities go here.
## Interacting with the project
The following commands can be used to perform different actions as configured in
the project. Each command ("`command`") can be run within the `sbt` console as
simply `command` or in batch mode from a shell session in the project directory
with `sbt command` or `sbt "command; command; ..."`.
* `run` to execute a LISA file, prompting which file to run
* `runMain classPath` to run a specific main file at `classPath` without prompt.
* For example: `runMain lisa.mathematics.settheory.SetTheory`
* `test` to compile and execute the test suite
* `assembly` to package LISA as a library
* `doc` to generate the Scala documentation
* `scalafix` to lint the whole project
* `scalafmt` to format the whole project
* `sbt test` to compile and execute the test suite ## License and Distribution
* `sbt assembly` to package it as a library
* `sbt doc` to generate the Scala documentation
* `sbt run` to execute a LISA file
* `sbt scalafix` to lint the whole codebase
* `sbt scalafmt` to format the whole codebase
## LICENSE Copyright © 2023 EPFL
Copyright 2023 EPFL
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License"); you may not
you may not use this file except in compliance with the License. use this file except in compliance with the License. You may obtain a copy of
You may obtain a copy of the License at the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
See the License for the specific language governing permissions and License for the specific language governing permissions and limitations under
limitations under the License. the License.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment