Пример #1
0
def i_attributeSet(ss: Substrate, attset: attributeSet) -> Sctids_or_Error:
    lhs = i_subAttributeSet(ss, attset.first)
    rhs = attset.second
    if rhs.is_empty or lhs.inran('error'):
        return lhs
    elif rhs.head.inran('attset_conjattset'):
        return intersect(lhs, i_conjunctionAttributeSet(ss, rhs.head.attset_conjattset))
    else:
        return union(lhs, i_disjunctionAttributeSet(ss, rhs.head.attset_disjattset))
Пример #2
0
def i_refinement(ss: Substrate, rfnment: refinement) -> Sctids_or_Error:
    lhs = i_subRefinement(ss, rfnment.first)
    rhs = rfnment.second
    # TODO - the "or" below is a change to page 17 of the spec
    if rhs.is_empty or lhs.inran('error'):
        return lhs
    if rhs.head.inran('refine_conjset'):
        return intersect(lhs, i_conjunctionRefinementSet(ss, rhs.head.refine_conjset))
    else:
        return union(lhs, i_disjunctionRefinementSet(ss, rhs.head.refine_disjset))
Пример #3
0
def i_refinedExpressionConstraint(ss: Substrate, rec: refinedExpressionConstraint) -> Sctids_or_Error:
    unref_interp = i_unrefinedExpressionConstraint(ss, rec.first)
    rhs = i_refinement(ss, rec.second)
    return intersect(unref_interp, rhs)
Пример #4
0
def i_conjunctionAttributeSet(ss: Substrate, conjset: conjunctionAttributeSet) -> Sctids_or_Error:
    return i_subAttributeSet(ss, conjset.head) if conjset.tail.is_empty else \
           intersect(i_subAttributeSet(ss, conjset.head), i_conjunctionAttributeSet(ss, conjset.tail))