module specific_breakage depends on specific_impairment sort declarations breach :: break destroy :: break divide :: break ruin :: break take_apart :: break property_group :: thing property_value :: property_group animacy_value, breakability_value, color_value, consistency_value, density_value,sentience_value, sex_value, smell_value, taste_value, temperature_value, texture_value, trait_value, wetness_value :: property_value function declarations fluents basic has_region : tangible_entity * spatial_entity -> booleans has_part : entity * entity -> booleans exists : entity -> booleans material : tangible_entity * tangible_entity -> booleans animacy : entity * animacy_value -> booleans breakability : tangible_entity * breakability_value -> booleans color : spatial_entity * color_value -> booleans consistency : tangible_entity * consistency_value -> booleans density : tangible_entity * density_value -> booleans sentience : living_entity * sentience_value -> booleans sex : living_entity * sex_value -> booleans smell : tangible_entity * smell_value -> booleans taste : tangible_entity * taste_value -> booleans temperature : tangible_entity * temperature_value -> booleans texture : tangible_entity * texture_value -> booleans trait : entity * trait_value -> booleans wetness : tangible_entity * wetness_value -> booleans statics defined two_results_exist : divide -> booleans axioms false if instance(X, breach), -defined_result(X). false if instance(X, breach), result(X, R), -instance(R, spatial_entity). false if instance(X, breach), agent(X, A), -instance(A, tangible_entity). occurs(X) causes has_region(O, R) if instance(X, breach), result(R), object(O). false if instance(X, divide), result(X, R1), result(X, R2), result(X, R3), R1 != R2, R2 != R3, R3 != R1. false if instance(X, divide), -two_results_exist(X). two_results_exist(X) if instance(X, divide), result(X, R1), result(X, R2), R1 != R2. occurs(X) causes exists(R) if instance(X, divide), result(X, R). occurs(X) causes material(R, Y) if instance(X, divide), object(X, O), material(O, Y). occurs(X) causes animacy(R, Y) if instance(X, divide), object(X, O), animacy(O, Y). occurs(X) causes breakability(R, Y) if instance(X, divide), object(X, O), breakability(O, Y). occurs(X) causes color(R, Y) if instance(X, divide), object(X, O), color(O, Y). occurs(X) causes consistency(R, Y) if instance(X, divide), object(X, O), consistency(O, Y). occurs(X) causes density(R, Y) if instance(X, divide), object(X, O), density(O, Y). occurs(X) causes sentience(R, Y) if instance(X, divide), object(X, O), sentience(O, Y). occurs(X) causes sex(R, Y) if instance(X, divide), object(X, O), sex(O, Y). occurs(X) causes smell(R, Y) if instance(X, divide), object(X, O), smell(O, Y). occurs(X) causes taste(R, Y) if instance(X, divide), object(X, O), taste(O, Y). occurs(X) causes temperature(R, Y) if instance(X, divide), object(X, O), temperature(O, Y). occurs(X) causes texture(R, Y) if instance(X, divide), object(X, O), texture(O, Y). occurs(X) causes trait(R, Y) if instance(X, divide), object(X, O), trait(O, Y). occurs(X) causes wetness(R, Y) if instance(X, divide), object(X, O), wetness(O, Y). false if instance(X, ruin), agent(X, A), -instance(A, tangible_entity). false if instance(X, ruin), instrument(X, I), -instance(I, tangible_entity). occurs(X) causes is_ruined(O) if instance(X, ruin), object(X, O). occurs(X) causes -has_part(O, P) if instance(X, take_apart), object(X, O), has_part(O, P).