Interface Datatype<Name>

Helper class for declaring Z3 datatypes.

Follows the same pattern as Python Z3 API for declaring constructors before creating the actual datatype sort.

const List = new ctx.Datatype('List');
List.declare('cons', ['car', ctx.Int.sort()], ['cdr', List]);
List.declare('nil');
const ListSort = List.create();
interface Datatype<Name extends string = "main"> {
    ctx: Context<Name>;
    name: string;
    create(): DatatypeSort<Name>;
    declare(
        name: string,
        ...fields: [string, Datatype<Name> | AnySort<Name>][],
    ): this;
}

Type Parameters

  • Name extends string = "main"

Properties

Methods

Properties

name: string

Methods

  • Declare a constructor for this datatype.

    Parameters

    • name: string

      Constructor name

    • ...fields: [string, Datatype<Name> | AnySort<Name>][]

      Array of [field_name, field_sort] pairs

    Returns this