public final class GenericSortInstantiations
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
GenericSortInstantiations.FailException |
Modifier and Type | Field and Description |
---|---|
static GenericSortInstantiations |
EMPTY_INSTANTIATIONS |
private static GenericSortInstantiations.FailException |
FAIL_EXCEPTION |
private ImmutableMap<GenericSort,Sort> |
insts |
private static GenericSortException |
UNSATISFIABLE_SORT_CONSTRAINTS
exception thrown if no solution exists
|
Modifier | Constructor and Description |
---|---|
private |
GenericSortInstantiations(ImmutableMap<GenericSort,Sort> p_insts) |
Modifier and Type | Method and Description |
---|---|
private static ImmutableList<Sort> |
addChosenInstantiations(ImmutableMap<GenericSort,Sort> p_curRes,
GenericSort p_gs,
ImmutableList<Sort> p_subsorts) |
private static void |
addSortsToSet(java.util.Set<Sort> p_set,
ImmutableSet<Sort> p_sorts) |
java.lang.Boolean |
checkCondition(GenericSortCondition p_condition) |
java.lang.Boolean |
checkSorts(SchemaVariable sv,
InstantiationEntry<?> p_entry) |
private static ImmutableList<Sort> |
chooseResults(GenericSort p_gs,
ImmutableList<GenericSortCondition> p_idConditions) |
private static Sort |
condSort(java.util.Iterator<GenericSortCondition> itC) |
static GenericSortInstantiations |
create(ImmutableList<GenericSort> p_sorts,
ImmutableList<GenericSortCondition> p_conditions,
Services services)
Create an object that holds instantiations of the generic sorts
"p_sorts" satisfying the conditions "p_conditions"
|
static GenericSortInstantiations |
create(java.util.Iterator<ImmutableMapEntry<SchemaVariable,InstantiationEntry<?>>> p_instantiations,
ImmutableList<GenericSortCondition> p_conditions,
Services services)
Create an object that solves the conditions given by the
instantiation iterator, i.e. instantiations of the generic
sorts used within "p_instantiations" are sought for which are
compatible with the instantiations of the SVs
|
private static ImmutableMap<GenericSort,Sort> |
descend(ImmutableList<GenericSort> p_remainingSorts,
ImmutableMap<GenericSort,Sort> p_curRes,
ImmutableList<GenericSortCondition> p_conditions,
ImmutableList<GenericSort> p_pushedBack,
GenericSort p_gs,
ImmutableList<Sort> p_subsorts,
ImmutableList<Sort> p_chosenList,
Services services) |
private static ImmutableList<Sort> |
findMinimalElements(java.util.Set<Sort> p_inside)
Find all minimal elements of the given set
p_inside |
ImmutableMap<GenericSort,Sort> |
getAllInstantiations()
ONLY FOR JUNIT TESTS
|
Sort |
getInstantiation(GenericSort p_gs) |
private static Sort |
getOneOf(java.util.Set<Sort> p_set) |
Sort |
getRealSort(SchemaVariable p_sv,
TermServices services) |
Sort |
getRealSort(Sort p_s,
TermServices services) |
boolean |
isEmpty() |
boolean |
isInstantiated(GenericSort p_gs) |
private static boolean |
isPossibleInstantiation(GenericSort p_gs,
Sort p_s,
ImmutableMap<GenericSort,Sort> p_curRes) |
private static boolean |
isSupersortOf(Sort p_s,
ImmutableList<Sort> p_subsorts) |
private static ImmutableList<Sort> |
minimalSupersorts(ImmutableList<Sort> p_sorts,
Services services)
Find all minimal common supersorts of "p_itSorts"
PRECONDITION: !
|
private static ImmutableMap<GenericSort,Sort> |
solve(ImmutableList<GenericSort> p_sorts,
ImmutableList<GenericSortCondition> p_conditions,
Services services)
Really solve the conditions given
|
private static ImmutableMap<GenericSort,Sort> |
solveForcedInst(ImmutableList<GenericSort> p_remainingSorts,
ImmutableMap<GenericSort,Sort> p_curRes,
ImmutableList<GenericSortCondition> p_conditions,
Services services)
Method which is called by solveHelp and tries to instantiate
the generic sorts for which GSCForceInstantiation-conditions
(with "maximum" parameter) are contained within "p_conditions"
|
private static ImmutableMap<GenericSort,Sort> |
solveForcedInstHelp(ImmutableList<GenericSort> p_remainingSorts,
ImmutableMap<GenericSort,Sort> p_curRes,
Services services)
Method which is called recursively and tries to instantiate one
(the first) generic sort from the "p_remainingSorts"-list
|
private static ImmutableMap<GenericSort,Sort> |
solveHelp(ImmutableList<GenericSort> p_remainingSorts,
ImmutableMap<GenericSort,Sort> p_curRes,
ImmutableList<GenericSortCondition> p_conditions,
ImmutableList<GenericSort> p_pushedBack,
Services services)
Method which is called recursively and tries to instantiate one
(the first) generic sort from the "p_remainingSorts"-list
|
ImmutableList<GenericSortCondition> |
toConditions()
Create a list of conditions establishing the instantiations
stored by this object (not saying anything about further
generic sorts)
|
private static ImmutableList<Sort> |
toList(ImmutableSet<Sort> p_set) |
private static ImmutableList<GenericSort> |
topology(ImmutableList<GenericSort> p_sorts)
Sort generic sorts topologically, i.e. if sort A is a supersort
of sort B, then A appears behind B within the return value
|
java.lang.String |
toString() |
public static final GenericSortInstantiations EMPTY_INSTANTIATIONS
private final ImmutableMap<GenericSort,Sort> insts
private static final GenericSortException UNSATISFIABLE_SORT_CONSTRAINTS
private static final GenericSortInstantiations.FailException FAIL_EXCEPTION
private GenericSortInstantiations(ImmutableMap<GenericSort,Sort> p_insts)
public static GenericSortInstantiations create(java.util.Iterator<ImmutableMapEntry<SchemaVariable,InstantiationEntry<?>>> p_instantiations, ImmutableList<GenericSortCondition> p_conditions, Services services)
p_instantiations
- list of SV instantiationsp_conditions
- additional conditions for sort instantiationsGenericSortException
- iff the conditions could not be
solvedpublic static GenericSortInstantiations create(ImmutableList<GenericSort> p_sorts, ImmutableList<GenericSortCondition> p_conditions, Services services)
p_sorts
- generic sorts to instantiatep_conditions
- conditions the instantiations have to
satisfyGenericSortException
- if no instantiations has been
foundpublic java.lang.Boolean checkSorts(SchemaVariable sv, InstantiationEntry<?> p_entry)
public java.lang.Boolean checkCondition(GenericSortCondition p_condition)
public boolean isInstantiated(GenericSort p_gs)
public Sort getInstantiation(GenericSort p_gs)
public boolean isEmpty()
public ImmutableList<GenericSortCondition> toConditions()
public Sort getRealSort(SchemaVariable p_sv, TermServices services)
services
- the Services classGenericSortException
- iff p_s is a generic sort which is
not yet instantiatedpublic Sort getRealSort(Sort p_s, TermServices services)
private static ImmutableMap<GenericSort,Sort> solve(ImmutableList<GenericSort> p_sorts, ImmutableList<GenericSortCondition> p_conditions, Services services)
p_sorts
- generic sorts that must be instantiatedp_conditions
- conditions to be solvedGenericSortException
- no solution could be foundprivate static ImmutableMap<GenericSort,Sort> solveHelp(ImmutableList<GenericSort> p_remainingSorts, ImmutableMap<GenericSort,Sort> p_curRes, ImmutableList<GenericSortCondition> p_conditions, ImmutableList<GenericSort> p_pushedBack, Services services)
p_remainingSorts
- generic sorts which needs to be
instantiated (topologically sorted)p_curRes
- instantiations so farp_conditions
- conditions (see above)private static ImmutableMap<GenericSort,Sort> descend(ImmutableList<GenericSort> p_remainingSorts, ImmutableMap<GenericSort,Sort> p_curRes, ImmutableList<GenericSortCondition> p_conditions, ImmutableList<GenericSort> p_pushedBack, GenericSort p_gs, ImmutableList<Sort> p_subsorts, ImmutableList<Sort> p_chosenList, Services services)
private static ImmutableList<Sort> chooseResults(GenericSort p_gs, ImmutableList<GenericSortCondition> p_idConditions) throws GenericSortInstantiations.FailException
private static ImmutableList<Sort> toList(ImmutableSet<Sort> p_set)
private static Sort condSort(java.util.Iterator<GenericSortCondition> itC)
private static ImmutableList<Sort> addChosenInstantiations(ImmutableMap<GenericSort,Sort> p_curRes, GenericSort p_gs, ImmutableList<Sort> p_subsorts)
private static ImmutableMap<GenericSort,Sort> solveForcedInst(ImmutableList<GenericSort> p_remainingSorts, ImmutableMap<GenericSort,Sort> p_curRes, ImmutableList<GenericSortCondition> p_conditions, Services services)
p_curRes
- instantiations so farp_conditions
- conditions (see above)private static ImmutableMap<GenericSort,Sort> solveForcedInstHelp(ImmutableList<GenericSort> p_remainingSorts, ImmutableMap<GenericSort,Sort> p_curRes, Services services)
p_remainingSorts
- generic sorts which needs to be
instantiated (topologically sorted, starting with the most
general sort)p_curRes
- instantiations so farprivate static ImmutableList<GenericSort> topology(ImmutableList<GenericSort> p_sorts)
private static ImmutableList<Sort> minimalSupersorts(ImmutableList<Sort> p_sorts, Services services)
private static ImmutableList<Sort> findMinimalElements(java.util.Set<Sort> p_inside)
p_inside
private static void addSortsToSet(java.util.Set<Sort> p_set, ImmutableSet<Sort> p_sorts)
private static boolean isSupersortOf(Sort p_s, ImmutableList<Sort> p_subsorts)
private static boolean isPossibleInstantiation(GenericSort p_gs, Sort p_s, ImmutableMap<GenericSort,Sort> p_curRes)
public java.lang.String toString()
toString
in class java.lang.Object
public ImmutableMap<GenericSort,Sort> getAllInstantiations()