@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
15 lines (14 loc) • 820 B
TypeScript
import { type AbstractProduct, PartialProductDomain } from './partial-product-domain';
/**
* A product abstract domain as named Cartesian product of sub abstract domains.
* The sub abstract domains are represented by a record mapping property names to abstract domains.
* The Bottom element is defined as mapping every sub abstract domain to Bottom and the Top element is defined as mapping every sub abstract domain to Top.
* @template Product - Type of the abstract product of the product domain mapping property names to abstract domains
*/
export declare abstract class ProductDomain<Product extends Required<AbstractProduct>> extends PartialProductDomain<Product> {
constructor(value: Product);
abstract create(value: Product): this;
top(): this;
isTop(): boolean;
isTop(): this is this;
}