State

open class State<K, V> : HashMap<K, LatticeElement<V>>

Stores the current state. I.e., it maps K (e.g. a Node or Edge) to a LatticeElement. It provides some useful functions e.g. to check if the mapping has to be updated (e.g. because there are new nodes or because a new lattice element is bigger than the old one).

Inheritors

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
open override val keys: MutableSet<K>
Link copied to clipboard
open override val size: Int
Link copied to clipboard

Functions

Link copied to clipboard
open override fun clear()
Link copied to clipboard
open override fun clone(): Any
Link copied to clipboard
open override fun compute(p0: K, p1: BiFunction<in K, in LatticeElement<V>?, out LatticeElement<V>?>): LatticeElement<V>?
Link copied to clipboard
open override fun computeIfAbsent(p0: K, p1: Function<in K, out LatticeElement<V>>): LatticeElement<V>
Link copied to clipboard
open override fun computeIfPresent(p0: K, p1: BiFunction<in K, in LatticeElement<V>, out LatticeElement<V>?>): LatticeElement<V>?
Link copied to clipboard
open override fun containsKey(key: K): Boolean
Link copied to clipboard
open override fun containsValue(value: LatticeElement<V>): Boolean
Link copied to clipboard
open fun duplicate(): State<K, V>

Deep copies this object.

Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
open override fun forEach(p0: BiConsumer<in K, in LatticeElement<V>>)
Link copied to clipboard
open operator override fun get(key: K): LatticeElement<V>?
Link copied to clipboard
open override fun getOrDefault(key: K, defaultValue: LatticeElement<V>): LatticeElement<V>
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
open override fun isEmpty(): Boolean
Link copied to clipboard
open fun lub(other: State<K, V>): Pair<State<K, V>, Boolean>

It updates this state by adding all new nodes in other to this and by computing the least upper bound for each entry.

Link copied to clipboard
open override fun merge(p0: K, p1: LatticeElement<V>, p2: BiFunction<in LatticeElement<V>, in LatticeElement<V>, out LatticeElement<V>?>): LatticeElement<V>?
Link copied to clipboard
fun SymbolMap.mergeFrom(symbolMap: SymbolMap)

This function merges in all entries from the symbolMap into the current SymbolMap.

Link copied to clipboard
open fun needsUpdate(other: State<K, V>): Boolean

Checks if an update is necessary, i.e., if other contains nodes which are not present in this and if the lattice element of a node in other "is bigger" than the respective lattice element in this. It does not modify anything.

Link copied to clipboard
open fun push(newNode: K, newLatticeElement: LatticeElement<V>?): Boolean

Adds a new mapping from newNode to (a copy of) newLatticeElement to this object if newNode does not exist in this state yet. If it already exists, it computes the least upper bound of newLatticeElement and the current one for newNode. It returns if the state has changed.

Link copied to clipboard
open override fun put(key: K, value: LatticeElement<V>): LatticeElement<V>?
Link copied to clipboard
open override fun putAll(from: Map<out K, LatticeElement<V>>)
Link copied to clipboard
open override fun putIfAbsent(p0: K, p1: LatticeElement<V>): LatticeElement<V>?
Link copied to clipboard
open override fun remove(key: K): LatticeElement<V>?
open override fun remove(key: K, value: LatticeElement<V>): Boolean
Link copied to clipboard
open override fun replace(p0: K, p1: LatticeElement<V>): LatticeElement<V>?
open override fun replace(p0: K, p1: LatticeElement<V>, p2: LatticeElement<V>): Boolean
Link copied to clipboard
open override fun replaceAll(p0: BiFunction<in K, in LatticeElement<V>, out LatticeElement<V>>)
Link copied to clipboard
open override fun toString(): String