- Introduction
- 1. Installation
- 1.1. opam package manager
- 1.2. Install Coq and 3rd parties' dependencies
- 1.3. Install Pruvendo libraries
- 2. Quick start
- 2.1. Write simple contract
- 2.2. Compile and extract solidity sources
- 2.3. Compile extracted contract and deploy
- 3. Coq embedded DSL
- 3.1. Coq custom grammar
- 3.2. Ursus embedding
- 3.3. URValue grammar
- 3.4. ULValue grammar
- 3.5. UExpression grammar
- 3.6. Notational mechanism
- 4. Ursus as a language
- 4.1. Contract file structure
- 4.2. Contract file headers
- 4.3. Contract file interfaces
- 4.4. Contract record
- 4.5. Types, primitives, and literals
- 4.6. Global constants
- 4.7. Complex Structures
- 4.8. Functions and modifiers
- 4.9. Function operators
- 4.10. Interfaces and messages
- 4.11. Function attributes
- 4.12. Local state and variables
- 4.13. Multi-contract system
- 4.14. Contract inheritance
- 5. Ursus programming style
- 5.1. REPL
- 5.2. Goal and context
- 5.3. Tactics and tacticals
- 5.3.1. Ursus control sub-languange
- 5.4. Holes
- 5.5. Default prefix and postfix operations
- 6. Ursus standard library
- 6.1. Primitives operations
- 6.2. Standart functions
- 6.3. Basic operators
- 6.4. TVM functions
- 7. Ursus verification
- 7.1. Common principles
- 7.2. StdLib verification
- 7.3. QuickChick
- 8. Long start
- 8.1. Designing contract
- 8.2. Implementation
- 8.3. Extracting, compiling and deploy
- 8.4. Specification
- 8.5. TS4 integration
- 8.6. Quickchicks
- 8.7. Evals and execs
- 8.8. Direct proofs
- 8.9. Scenarios
- 8.10. Multi-contract verification
- 9. Translation
- 9.1. sol->ursus translation
- 9.2. cpp->ursus translation
- 9.3. ursus->sol translation
- 10. Advanced topics
- 10.1. Ledger and Superledger
- 10.2. Specification
- 10.3. Proof kinds
- 10.4. Evals and execs generator
- 10.5. Elpi automation
- 11. More and uncategorized