Beispiel #1
0
def nicer_representation(asker, repr1, repr2, req):
    if (booleans.ask_firmly(asker, builtins.equal(req, irreducible())) or 
        booleans.ask_firmly(asker, builtins.equal(req, exposed_modifier()))):
        return asker.affirm()
    else:
        #FIXME I should do something much more sophisticated here
        return asker.deny()
def set_image(asker, new_value, k, key, value, other):
    if booleans.ask_firmly(asker, builtins.equal(k, key)):
        return asker.reply(answer=cons(key=key, value=new_value, other=other))
    else:
        return asker.reply(answer=cons(key=key, value=value,
            other=updates.update(updates.set_field(image(k), new_value), other)
        ))
Beispiel #3
0
def orthogonal(asker, field1, field2):
    if booleans.ask_firmly(asker, builtins.equal(field1, field2)):
        return asker.reply(answer=T.no())
    result = orthogonality_tester.dispatch(asker, field1, field2)
    if result is not None: return result
    result = orthogonality_tester.dispatch(asker, field2, field1)
    if result is not None: return result
def cons_image(asker, k, key, value, other):
    if booleans.ask_firmly(asker, builtins.equal(k, key)):
        return asker.reply(answer=value)
    else:
        return asker.ask_tail(
            fields.get_field(image(k), other), 
            handler=asker.pass_through(not_found.head)
        )
Beispiel #5
0
def translate_composite(asker, property, input, object, update, a, b):
    if convert.ask_firmly(asker, builtins.equal(update, b)):
        intermediate = asker.ask(reintroduce_modifier(
            property, 
            a, 
            input, 
            object
        )).firm_answer
        return asker.reply(answer=held_update(update, intermediate))
Beispiel #6
0
def translate_removal(asker, property, old, new, to_cut):
    if convert.to_bool(asker.ask(builtins.equal(to_cut, object)).firm_answer):
        return asker.reply(answer=new)
    else:
        return asker.reply(answer=properties.simple_add_modifier(new, property))
Beispiel #7
0
def translate_field_across_setting(asker, to_translate, old_value, old, new, field, new_value):
    if booleans.ask_firmly(asker, fields.orthogonal(to_translate, field)):
        return asker.reply(answer=old_value)
    elif booleans.ask_firmly(asker, builtins.equal(to_translate, field)):
        return asker.reply(answer=new_value)
Beispiel #8
0
def translate_field_across_application(asker, to_translate, old_value, old, new, field, update):
    if booleans.ask_firmly(asker, fields.orthogonal(to_translate, field)):
        return asker.reply(answer=old_value)
    elif booleans.ask_firmly(asker, builtins.equal(to_translate, field)):
        return asker.reply(answer=updates.update(update, field))
Beispiel #9
0
def setter_stripper(asker, property, object, field, new_value):
    if booleans.ask_firmly(asker, builtins.equal(field, fields.modifier())):
        return asker.reply(value=keep_strip(keep=property))
Beispiel #10
0
def strip_field_value(asker, property, object, update, field):
    property_field = property['field']
    if booleans.ask_firmly(asker, builtins.equal(field, property_field)):
        return asker.reply(value=keep_strip(keep=property))
Beispiel #11
0
def application_stripper(asker, property, object, update, field):
    if booleans.ask_firmly(asker, builtins.equal(field, fields.modifier())):
        return asker.reply(value=keep_strip(keep=property))
Beispiel #12
0
def translate_composite_held_arg(asker, property, transferring_across, input, object, update):
    if convert.ask_firmly(asker, builtins.equal(update, transferring_across)):
        if convert.ask_firmly(asker, builtins.equal(input, object)):
            return asker.reply(answer=held_update(update, properties.simple_add_modifier(object, property)))
Beispiel #13
0
def infer_from_field_value(asker, to_infer, field, value):
    if booleans.ask_firmly(asker, builtins.equal(to_infer, field)):
        return asker.reply(answer=value)
    else:
        return asker.reply(value=unknown())
Beispiel #14
0
def set_implication(asker, to_set, new_value, field):
    if booleans.ask_firmly(asker, builtins.equal(to_set, field)):
        return asker.reply(answer=field_value(to_set, new_value))
    else:
        return asker.reply(value=unknown())