EquationSystem

trait EquationSystem[U, V]

This is the abstract class for a generic equation system.

Type parameters:
U

the type for the unknowns of this equation system.

V

the type for the values assumed by the unknowns of this equation system.

Companion:
object
class Object
trait Matchable
class Any

Value members

Abstract methods

def withBaseAssignment(init: PartialFunction[U, V])(implicit magma: Magma[V]): EquationSystem[U, V]

Combine a base assignment with the equation system. The type V should be endowed with a magma.

Combine a base assignment with the equation system. The type V should be endowed with a magma.

Value parameters:
init

the assignment to add to the equation system

def withBoxes(boxes: BoxAssignment[U, V]): EquationSystem[U, V]

Add boxes to the equation system

Add boxes to the equation system

Value parameters:
boxes

a box assignment

Add a tracer to the equation system. The tracer contains call-backs to be invoked during body evaluation.

Add a tracer to the equation system. The tracer contains call-backs to be invoked during body evaluation.

Value parameters:
t

the tracer

Abstract fields

val body: U => V

The body of the equation system, i.e., a map Assignment[U,V] => Assignment[U,V].

The body of the equation system, i.e., a map Assignment[U,V] => Assignment[U,V].

Given an assignment rho and unknown u, returns the pair (body(rho)(x), uks). uks is a set of unknowns with the property that if rho' differs from rho only for variables which are not in uks, then body(rho)(u)==body(rho')(u).

Given an assignment rho and unknown u, returns the pair (body(rho)(x), uks). uks is a set of unknowns with the property that if rho' differs from rho only for variables which are not in uks, then body(rho)(u)==body(rho')(u).

An initial value for starting the analyzer

An initial value for starting the analyzer

val inputUnknowns: U => Boolean

The unknowns which may be considered the input to this equation system.

The unknowns which may be considered the input to this equation system.