def check_transitive_assumptions(self, pot, variant): assumptions = variant.generate_transitive_assumptions() for assumption in assumptions: result_pots = list() linear_variations_variations = assumption_ratio_to_linear(assumption, pot) has_good_variaton = False for linear_assumptions in linear_variations_variations: bad_variation = False for linear_assumption in linear_assumptions: if not pot.linear_assumption_basic_test_on_possibility(linear_assumption): bad_variation = True break if not bad_variation: has_good_variaton = True break if not has_good_variaton: return False return True
def _filter_decomposed_ratio_to_linear(self, pot, decomposed): ret = decomposed_assumption() for decompose_variant_group in decomposed.variant_groups: ret.new_variant_group() for decomposed_variant in decompose_variant_group: all_variants = [ [ ] ] for assumption in decomposed_variant.assumptions: linear_assumptions_groups = assumption_ratio_to_linear(assumption, pot) new_all_variants = list() for linear_assumptions in linear_assumptions_groups: for current_variant in all_variants: new_all_variants.append( current_variant + linear_assumptions ) all_variants = new_all_variants for variant in all_variants: ret.new_variant() ret.variant.symbol_assumptions = deepcopy(decomposed_variant.symbol_assumptions) ret.variant.assumptions = variant ret.new_variant_group() return ret