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) ))
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) )
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))
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))
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)
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))
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))
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))
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))
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)))
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())
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())