diff --git a/src/main/scala/inox/Program.scala b/src/main/scala/inox/Program.scala index 7c978b1ca495dda629cbfbca7d36e6bb9b6cb23b..457efc2d6cd40bb1240d09fbfd562391c2c9f283 100644 --- a/src/main/scala/inox/Program.scala +++ b/src/main/scala/inox/Program.scala @@ -4,6 +4,18 @@ package inox import ast._ +/** Contains all definitions required to construct a complete Inox program. + * + * The elements of this class are typed dependently on the type of ''trees'', + * which is an object containing classes for expressions, types and definitions + * used by this program. + * + * ''symbols'' contains the actual definitions (classes and functions) of the program. + * + * ''ctx'' provides configuration options. + * + * ''printerOpts'' provides options for tree printers. + */ trait Program { val trees: Trees implicit val symbols: trees.Symbols diff --git a/src/main/scala/inox/ast/Constructors.scala b/src/main/scala/inox/ast/Constructors.scala index e9bf6c88568941cde347ea2f98810b6392ef121a..c365ba6285b64fd2389eb07ef3c2048f0d66a5b8 100644 --- a/src/main/scala/inox/ast/Constructors.scala +++ b/src/main/scala/inox/ast/Constructors.scala @@ -264,7 +264,7 @@ trait Constructors { case _ => Times(lhs, rhs) } - /** $encodingof expr.asInstanceOf[tpe], returns `expr` it it already is of type `tpe`. */ + /** $encodingof expr.asInstanceOf[tpe], returns `expr` if it already is of type `tpe`. */ def asInstOf(expr: Expr, tpe: ClassType) = { if (symbols.isSubtypeOf(expr.getType, tpe)) { expr diff --git a/src/main/scala/inox/package.scala b/src/main/scala/inox/package.scala index 9e4a1332e7044649ddd0434ccecd1e57158bc253..dc51473ff30f8cf7fb455d1817bc5b274b744cf4 100644 --- a/src/main/scala/inox/package.scala +++ b/src/main/scala/inox/package.scala @@ -2,41 +2,17 @@ /** Core package of the Inox solving interface * - * ==Structure== - * - * Leon is organized similarly to a compiler with a concept of [[leon.Pipeline]] - * and [[leon.LeonPhase]]. The main phases of Leon are implemented in subpackages, with - * an overview of the role of each of them below. - * - * The definition of the Pure Scala AST is in [[leon.purescala]]. Most of the other packages - * are articulated around the definitions of these ASTs. The [[leon.xlang]] provides extensions - * to the Pure Scala AST, but most of the other packages will ignore these extensions and - * assume a Pure Scala only AST. - * - * - [[leon.codegen]] provides bytecode generator for Leon programs. Enable the conversion of a [[leon.purescala.Definitions.Program]] to JVM bytecode. - * - * - [[leon.datagen]] provides a generator of expressions (trees), based on vanuatoo. - * - * - [[leon.evaluators]] implements different evaluators for Leon programs in Pure Scala. - * - * - [[leon.frontends]] provides the different front-ends to Leon. Currently it only implements a scalac integration, but it could potentially support other language. - * - * - [[leon.purescala]] defines the core AST for Pure Scala. Also provides useful tree manipulation methods. - * - * - [[leon.repair]] implements the Repair module of Leon. - * - * - [[leon.solvers]] provides an interface and implementations to solvers for Pure Scala expressions. The solvers are typically wrappers around SMT solvers, with some additional algorithms to handle recursive function invocations. - * - * - [[leon.synthesis]] implements the Synthesis module of Leon. - * - * - [[leon.termination]] implements the termination checker of Leon. - * - * - [[leon.utils]] - * - * - [[leon.verification]] implements the verification module of Leon. - * - * - [[leon.xlang]] provides extensions to Pure Scala. In particular, it introduces some expressions to represent imperative programs. Also provides the code to map such programs to Pure Scala equivalent ones. + * == Structure == * + * The package is organized in the following subpackages: + * + * [[inox.ast]]: Provides definitions for expressions, types and definitions, + * as well as operations on them + * [[inox.datagen]]: Generators/enumerators for Inox expressions + * [[inox.evaluators]]: Evaluators of Inox expressions + * [[inox.solvers]]: Interfaces to SMT-solvers + * [[inox.transformers]]: Tree transformations for Inox expressions + * [[inox.utils]]: Utility methods */ package object inox { implicit class BooleanToOption(cond: Boolean) {