예제 #1
0
def count_existential(quantifiers):
    '''
    Returns the number of universally quantified variables

    '''

    quantified_variables = []
    for quantifier in quantifiers:
        Translation.get_existentially_quantified(quantifier, quantified_variables)
예제 #2
0
def existential_predicate(predicate, quantifiers):

    if predicate == [] or quantifiers == []:
        return False

    existentials = []
    for quant in quantifiers:
        Translation.get_existentially_quantified(quant, existentials)

    if all([x in existentials for x in predicate[1:]]):
        return predicate
    else:
        return False
예제 #3
0
def generate_quantifier(sentence, quantifiers):
    '''
    Take a sentence and set of quantifiers and trim the quantifiers so only
    variables in the sentence exist in the quantifier. Return the new
    quantifier and sentence together in a list.

    return list axiom, [[quantifiers], [sentence]]
    '''

    new_quantifiers = quantifiers[:]

    predicates = []
    Translation.find_binary_predicates(sentence, predicates)
    Translation.find_unary_predicates(sentence, predicates)
    predicates = list(set([get_predicate_name(p) for p in predicates]))

    #print("[+] Found Predicates:", predicates)

    quantified_variables = []
    for quantifier in new_quantifiers:
        Translation.get_universally_quantified(quantifier, quantified_variables)
        Translation.get_existentially_quantified(quantifier, quantified_variables)

    quantified_variables = list(set(quantified_variables))

    #print("[+] Found Quantified Variables:", quantified_variables)

    flattened_axiom = list(set(list(Util.flatten(sentence))))

    variables = list(filter(Translation.is_nonlogical, flattened_axiom))
    variables = [v for v in variables if v not in predicates]

    #print("[+] Found Variables:", variables)

    variables_to_trim = [v for v in quantified_variables if v not in variables]

    #print("[+] Removing Variables:", variables_to_trim)

    #print("[+] Starting Quantifier:", new_quantifiers)

    new_quantifiers = trim_quantifier(new_quantifiers, variables_to_trim)

    #print("[+] Generated Quantifier:", new_quantifiers)

    return [copy.deepcopy(new_quantifiers), copy.deepcopy(sentence)]