A complete lattice with a partially ordered set, join operator (LUB), meet operator (GLB), top element, and bottom element (e.g. for abstract domains).

interface Lattice<
    Value,
    Top,
    Bot,
    Lift extends Value | Top | Bot = Value | Top | Bot,
> {
    bottom(): Lattice<Value, Top, Bot, Lift> & Lattice<Value, Top, Bot, Bot>;
    create(value: Value | Top | Bot): this;
    equals(other: this): boolean;
    isBottom(): this is Lattice<Value, Top, Bot, Bot>;
    isTop(): this is Lattice<Value, Top, Bot, Top>;
    isValue(): this is Lattice<Value, Top, Bot, Value>;
    join(other: this): this;
    leq(other: this): boolean;
    meet(other: this): this;
    toJson(): unknown;
    top(): Lattice<Value, Top, Bot, Lift> & Lattice<Value, Top, Bot, Top>;
    toString(): string;
    get value(): Lift;
}

Type Parameters

  • Value

    Type of a lattice element representing a value (may exclude Top and Bot)

  • Top

    Type of the Top element (greatest element) of the complete lattice

  • Bot

    Type of the Bottom element (least element) of the complete lattice

  • Lift extends Value | Top | Bot = Value | Top | Bot

    Type of the lattice elements (defaults to Value or Top or Bot)

Implemented by

Accessors

Methods

  • Checks whether the current abstract value is less than or equal to another abstract value with respect to the partial order of the lattice.

    Parameters

    • other: this

    Returns boolean