Exemple #1
0
def test_prog_g91():
    for i in range(1, 8):
        eclingo_control = eclingo.Control(
            max_models=0,
            semantics=False,
            optimization=eclingo.__optimization__)
        input_path = INPUT_PROG_PATH + f'prog{i:02d}.lp'
        eclingo_control.load(input_path)
        eclingo_control.parse()
        result = [sorted(model.symbols) for model in eclingo_control.solve()]
        result = str(sorted(result)).replace(' ', '')
        with open(OUTPUT_PROG_PATH + f'sol{i:02d}.txt', 'r') as output_prog:
            sol = output_prog.read()
            sol = sol.replace('\n', '').replace(' ', '')
        assert result == sol
Exemple #2
0
def test_eligible_k15():
    for i in range(1, 17):
        eclingo_control = eclingo.Control(
            max_models=0,
            semantics=True,
            optimization=eclingo.__optimization__)
        input_path = INPUT_ELIGIBLE_PATH + f'eligible{i:02d}.lp'
        eclingo_control.load(KB_ELIGIBLE_PATH)
        eclingo_control.load(input_path)
        eclingo_control.parse()
        result = [sorted(model.symbols) for model in eclingo_control.solve()]
        result = str(sorted(result)).replace(' ', '')
        with open(OUTPUT_ELIGIBLE_PATH + f'sol_eligible{i:02d}.txt',
                  'r') as output_prog:
            sol = output_prog.read()
            sol = sol.replace('\n', '').replace(' ', '')
        assert result == sol
Exemple #3
0
def test_yale_g91():
    for i in range(1, 9):
        if i != 6:
            eclingo_control = eclingo.Control(
                max_models=0,
                semantics=False,
                optimization=eclingo.__optimization__)
            input_path = INPUT_YALE_PATH + f'yale{i:02d}.lp'
            eclingo_control.load(KB_YALE_PATH)
            eclingo_control.load(input_path)
            eclingo_control.add_const('length', str(i))
            eclingo_control.parse()
            result = [
                sorted(model.symbols) for model in eclingo_control.solve()
            ]
            result = str(sorted(result)).replace(' ', '')
            with open(OUTPUT_YALE_PATH + f'sol_yale{i:02d}.txt',
                      'r') as output_prog:
                sol = output_prog.read()
                sol = sol.replace('\n', '').replace(' ', '')
            assert result == sol
Exemple #4
0
def main():
    print(f'eclingo version {eclingo.__version__}')

    argparser = argparse.ArgumentParser(prog='eclingo')
    argparser.add_argument('-n', '--models', type=int,
                           help='maximum number of models to compute (0 computes all models)',
                           default=1)
    argparser.add_argument('-k', '--k15', action='store_true',
                           help='computes world views under K15 semantics')
    argparser.add_argument('-op', '--optimization', type=int,
                           help='number of optimization to use (0 for no optimizations)',
                           default=eclingo.__optimization__)
    argparser.add_argument('-c', '--const', action='append',
                           help='adds a constant to the program (using \'<name>=<term>\' format)')
    argparser.add_argument('input_files', nargs='+', type=str, help='path to input files')
    args = argparser.parse_args()

    start = timer()

    eclingo_control = eclingo.Control(max_models=args.models,
                                      semantics=args.k15,
                                      optimization=args.optimization)

    for file_path in args.input_files:
        eclingo_control.load(file_path)
    if args.const:
        for constant in args.const:
            name, term = constant.split('=')
            eclingo_control.add_const(name, term)

    eclingo_control.parse()
    print('Solving...')
    for model in eclingo_control.solve():
        print(f'Answer: {eclingo_control.models}\n{model}')

    end = timer()

    print('SATISFIABLE\n') if eclingo_control.models else print('UNSATISFIABLE\n')

    print(f'Elapsed time: {(end-start):.6f} s')
Exemple #5
0
 def setUp(self):
     self.eclingo_control = eclingo.Control(max_models=0,
                                             semantics=False,
                                             optimization=eclingo.__optimization__)