lisa/src/main/java/it/unive/lisa/analysis/lattices/FunctionalLattice.java
protected final F functionalLift(F other, KeyFunctionalLift<K> keyLifter, FunctionalLift<V> valueLifter)
			throws SemanticException {
		F result = bottom();
		result.function = mkNewFunction(null);
		Set<K> keys = keyLifter.keyLift(this.getKeys(), other.getKeys());
		for (K key : keys)
			try {
				result.function.put(key, valueLifter.lift(getState(key), other.getState(key)));
			} catch (SemanticException e) {
				throw new SemanticException("Exception during functional lifting of key '" + key + "'", e);
			}
		return result;
	}
/**
	 * Yields the functional lift between {@code this} and {@code other}.
	 * 
	 * @param other       the other functional lattice
	 * @param keyLifter   the key lifter
	 * @param valueLifter the value lifter
	 * 
	 * @return the intersection between {@code k1} and {@code k2}
	 * 
	 * @throws SemanticException if something goes wrong while lifting the
	 *                               lattice elements
	 */
Yields the functional lift between  this and  other.

@param other       the other functional lattice
@param keyLifter   the key lifter
@param valueLifter the value lifter

@return the intersection between  k1 and  k2

@throws SemanticException if something goes wrong while lifting the
lattice elements
Yields the functional lift between this and other . @param other the other functional lattice @param keyLifter the key lifter @param valueLifter the value lifter @return the intersection between k1 and k2 @throws SemanticException if something goes wrong while lifting the lattice elements
protected final F functionalLift(F other, KeyFunctionalLift<K> keyLifter, FunctionalLift<V> valueLifter)
			throws SemanticException {
		F result = bottom();
		result.function = mkNewFunction(null);
		Set<K> keys = keyLifter.keyLift(this.getKeys(), other.getKeys());
		for (K key : keys)
			try {
				result.function.put(key, valueLifter.lift(getState(key), other.getState(key)));
			} catch (SemanticException e) {
				throw new SemanticException("Exception during functional lifting of key '" + key + "'", e);
			}
		return result;
	}
protected final F functionalLift ( F other , KeyFunctionalLift < K > keyLifter , FunctionalLift < V > valueLifter ) throws SemanticException { F result = bottom ( ) ; result . function = mkNewFunction ( null ) ; Set < K > keys = keyLifter . keyLift ( this . getKeys ( ) , other . getKeys ( ) ) ; for ( K key : keys ) try { result . function . put ( key , valueLifter . lift ( getState ( key ) , other . getState ( key ) ) ) ; } catch ( SemanticException e ) { throw new SemanticException ( "Exception during functional lifting of key '" + key + "'" , e ) ; } return result ; }
Yields the functional lift between {@code this} and {@code other}.
Yields the functional lift between { @code this } and { @code other } .