objids(1..10). typeInteger(0). typeString("n0"). typeInteger(1). typeString("n1"). typeInteger(2). typeString("n2"). typeInteger(3). typeString("n3"). typeInteger(4). typeString("n4"). typeInteger(5). typeString("n5"). typeInteger(6). typeString("n6"). typeInteger(7). typeString("n7"). typeInteger(8). typeString("n8"). typeInteger(9). typeString("n9"). typeInteger(10). typeString("n10"). typeInteger(11). typeString("n11"). typeInteger(12). typeString("n12"). typeInteger(13). typeString("n13"). typeInteger(14). typeString("n14"). typeInteger(15). typeString("n15"). typeInteger(16). typeString("n16"). typeInteger(17). typeString("n17"). typeInteger(18). typeString("n18"). typeInteger(19). typeString("n19"). typeBoolean(true). typeBoolean(false). typeString("a"). objremovele_(O) :- not objexiststargetle_(O), objexistsle_(O). objremovemi_(O) :- not objexiststargetmi_(O), objexistsmi_(O). objremoveri_(O) :- not objexiststargetri_(O), objexistsri_(O). orile_Device(O) :- main_orile_Device(O). le_Device(O) :- main_le_Device(O). targetle_Device(O) :- main_targetle_Device(O). -noobj(O) :- targetle_Device(O). castle_(O) :- main_targetle_Device(O), objexistsle_(O), not main_le_Device(O). castle_Device(O) :- main_targetle_Device(O), objexistsle_(O), not main_le_Device(O). main_targetle_Device(O) :- main_le_Device(O), not castle_(O),not -objremovele_(O). 1 {targetle_prop_Device_fixed(S,T): typeBoolean(T)} 1 :- targetle_Device(S). targetle_Device(S) :- targetle_prop_Device_fixed(S,T). typeBoolean(T) :- orile_prop_Device_fixed(S,T). typeBoolean(T) :- le_prop_Device_fixed(S,T). typeBoolean(T) :- targetle_prop_Device_fixed(S,T). targetle_prop_Device_fixed(S,T) :- le_prop_Device_fixed(S,T), not -targetle_prop_Device_fixed(S,T). 1 {targetle_prop_Device_name(S,T): typeString(T)} 1 :- targetle_Device(S). targetle_Device(S) :- targetle_prop_Device_name(S,T). typeString(T) :- orile_prop_Device_name(S,T). typeString(T) :- le_prop_Device_name(S,T). typeString(T) :- targetle_prop_Device_name(S,T). targetle_prop_Device_name(S,T) :- le_prop_Device_name(S,T), not -targetle_prop_Device_name(S,T). 0 {targetle_edge_Device_incoming(S,T): targetle_Connection(T)} 20 :- targetle_Device(S). targetle_Device(S) :- targetle_edge_Device_incoming(S,T). targetle_Connection(T) :- targetle_edge_Device_incoming(S,T). orile_Connection(O) :- main_orile_Connection(O). le_Connection(O) :- main_le_Connection(O). targetle_Connection(O) :- main_targetle_Connection(O). -noobj(O) :- targetle_Connection(O). castle_(O) :- main_targetle_Connection(O), objexistsle_(O), not main_le_Connection(O). castle_Connection(O) :- main_targetle_Connection(O), objexistsle_(O), not main_le_Connection(O). main_targetle_Connection(O) :- main_le_Connection(O), not castle_(O),not -objremovele_(O). 0 {targetle_edge_Connection_source(S,T): targetle_Device(T)} 1 :- targetle_Connection(S). targetle_Connection(S) :- targetle_edge_Connection_source(S,T). targetle_Device(T) :- targetle_edge_Connection_source(S,T). orile_edge_Connection_source(T,S) :- orile_edge_Device_outgoing(S,T). le_edge_Connection_source(T,S) :- le_edge_Device_outgoing(S,T). targetle_edge_Connection_source(T,S) :- targetle_edge_Device_outgoing(S,T). targetle_edge_Connection_source(S,T) :- le_edge_Connection_source(S,T), not -targetle_edge_Connection_source(S,T). 0 {targetle_edge_Connection_target(S,T): targetle_Device(T)} 1 :- targetle_Connection(S). targetle_Connection(S) :- targetle_edge_Connection_target(S,T). targetle_Device(T) :- targetle_edge_Connection_target(S,T). orile_edge_Connection_target(T,S) :- orile_edge_Device_incoming(S,T). le_edge_Connection_target(T,S) :- le_edge_Device_incoming(S,T). targetle_edge_Connection_target(T,S) :- targetle_edge_Device_incoming(S,T). targetle_edge_Connection_target(S,T) :- le_edge_Connection_target(S,T), not -targetle_edge_Connection_target(S,T). 0 {targetle_prop_Connection_speed(S,T): typeInteger(T)} 1 :- targetle_Connection(S). targetle_Connection(S) :- targetle_prop_Connection_speed(S,T). typeInteger(T) :- orile_prop_Connection_speed(S,T). typeInteger(T) :- le_prop_Connection_speed(S,T). typeInteger(T) :- targetle_prop_Connection_speed(S,T). targetle_prop_Connection_speed(S,T) :- le_prop_Connection_speed(S,T), not -targetle_prop_Connection_speed(S,T). orile_edge_Device_incoming(T,S) :- orile_edge_Connection_target(S,T). le_edge_Device_incoming(T,S) :- le_edge_Connection_target(S,T). targetle_edge_Device_incoming(T,S) :- targetle_edge_Connection_target(S,T). targetle_edge_Device_incoming(S,T) :- le_edge_Device_incoming(S,T), not -targetle_edge_Device_incoming(S,T). 0 {targetle_edge_Device_outgoing(S,T): targetle_Connection(T)} 20 :- targetle_Device(S). targetle_Device(S) :- targetle_edge_Device_outgoing(S,T). targetle_Connection(T) :- targetle_edge_Device_outgoing(S,T). orile_edge_Device_outgoing(T,S) :- orile_edge_Connection_source(S,T). le_edge_Device_outgoing(T,S) :- le_edge_Connection_source(S,T). targetle_edge_Device_outgoing(T,S) :- targetle_edge_Connection_source(S,T). targetle_edge_Device_outgoing(S,T) :- le_edge_Device_outgoing(S,T), not -targetle_edge_Device_outgoing(S,T). main_le_Device(newobj0). le_prop_Device_fixed(newobj0,true). le_prop_Device_name(newobj0,"pc1"). main_le_Connection(newobj1). le_prop_Connection_speed(newobj1,2). main_orile_Connection(newobj1). orile_prop_Connection_speed(newobj1,2). le_edge_Device_incoming(newobj0,newobj1). main_le_Device(newobj2). le_prop_Device_fixed(newobj2,true). le_prop_Device_name(newobj2,"pc2"). main_le_Connection(newobj3). le_prop_Connection_speed(newobj3,2). main_orile_Connection(newobj3). orile_prop_Connection_speed(newobj3,2). le_edge_Device_incoming(newobj2,newobj3). main_le_Device(newobj4). le_prop_Device_fixed(newobj4,true). le_prop_Device_name(newobj4,"pc3"). main_le_Connection(newobj5). le_prop_Connection_speed(newobj5,2). main_orile_Connection(newobj5). orile_prop_Connection_speed(newobj5,2). le_edge_Device_incoming(newobj4,newobj5). main_targetle_Device(P1) :- operation_createLeftServer(P0, P1, P2, P3). main_targetle_Connection(P2) :- operation_createLeftServer(P0, P1, P2, P3). targetle_edge_Connection_source(P2,P1) :- operation_createLeftServer(P0, P1, P2, P3). targetle_edge_Device_outgoing(P1,P2) :- operation_createLeftServer(P0, P1, P2, P3). targetle_prop_Connection_speed(P2,P0) :- operation_createLeftServer(P0, P1, P2, P3). targetle_prop_Device_fixed(P1,true) :- operation_createLeftServer(P0, P1, P2, P3). targetle_prop_Device_name(P1,P3) :- operation_createLeftServer(P0, P1, P2, P3). opcost_createLeftServer12(P0,R) :- typeInteger(P0),typeInteger(P0),R=P0 *P0,typeInteger(P0). opcost_createLeftServer1(P0,R) :- Ra = 3,opcost_createLeftServer12(P0,Rb),R=3 *Rb,typeInteger(P0). opcost_createLeftServer(P0,R) :- opcost_createLeftServer1(P0,Ra),Rb = 80,R=Ra +80,typeInteger(P0). :~ operation_createLeftServer(P0, P1, P2, P3),opcost_createLeftServer(P0,R). [R,operation_createLeftServer(P0, P1, P2, P3)] 1 { } 1 :- main_targetle_Device(P0), not main_le_Device(P0),objexistsle_(P0). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(P4), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- targetle_prop_Device_fixed(P1,P4), not le_prop_Device_fixed(P1,P4),targetle_Device(P1),typeBoolean(P4). 1 { } 1 :- not targetle_edge_Connection_source(P0,P1),le_edge_Connection_source(P0,P1),le_edge_Connection_source(P0,P1). 1 { } 1 :- not targetle_edge_Device_incoming(P0,P1),le_edge_Device_incoming(P0,P1),le_edge_Device_incoming(P0,P1). 1 { } 1 :- main_targetle_Connection(P0), not main_le_Connection(P0),objexistsle_(P0). 1 { } 1 :- not targetle_edge_Device_outgoing(P0,P1),le_edge_Device_outgoing(P0,P1),le_edge_Device_outgoing(P0,P1). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(true), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- targetle_prop_Connection_speed(P2,P0), not le_prop_Connection_speed(P2,P0),targetle_Connection(P2),typeInteger(P0). 1 { } 1 :- not objexiststargetle_(P0),main_le_Device(P0). 1 { } 1 :- targetle_edge_Connection_target(P0,P1), not le_edge_Connection_target(P0,P1),targetle_Connection(P0),targetle_Device(P1). 1 { } 1 :- not targetle_prop_Device_name(P0,P1),le_prop_Device_name(P0,P1),le_prop_Device_name(P0,P1). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(true), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- main_targetle_Connection(P2),objids(P2), not objexistsle_(P2). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(true), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- targetle_edge_Connection_source(P2,P1), not le_edge_Connection_source(P2,P1),targetle_Connection(P2),targetle_Device(P1). 1 { } 1 :- not targetle_prop_Device_fixed(P0,P1),le_prop_Device_fixed(P0,P1),le_prop_Device_fixed(P0,P1). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(true), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- targetle_prop_Device_name(P1,P3), not le_prop_Device_name(P1,P3),targetle_Device(P1),typeString(P3). 1 { } 1 :- not objexiststargetle_(P0),main_le_Connection(P0). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(true), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- main_targetle_Device(P1),objids(P1), not objexistsle_(P1). 1 { } 1 :- not targetle_edge_Connection_target(P0,P1),le_edge_Connection_target(P0,P1),le_edge_Connection_target(P0,P1). 1 { } 1 :- not targetle_prop_Connection_speed(P0,P1),le_prop_Connection_speed(P0,P1),le_prop_Connection_speed(P0,P1). 1 { } 1 :- targetle_edge_Device_incoming(P0,P1), not le_edge_Device_incoming(P0,P1),targetle_Device(P0),targetle_Connection(P1). 1 {operation_createLeftServer(P0, P1, P2, P3): objids(P1), not objexistsle_(P1), objids(P2), not objexistsle_(P2), targetle_Connection(P2),targetle_Device(P1), targetle_Device(P1),targetle_Connection(P2), targetle_Connection(P2),typeInteger(P0), targetle_Device(P1),typeBoolean(true), targetle_Device(P1),typeString(P3), typeInteger(P0), targetle_Device(P1), targetle_Connection(P2), typeString(P3) } 1 :- targetle_edge_Device_outgoing(P1,P2), not le_edge_Device_outgoing(P1,P2),targetle_Device(P1),targetle_Connection(P2). objids(O) :- main_orile_Device(O). objexistsorile_(O) :- main_orile_Device(O). objids(O) :- main_orile_Connection(O). objexistsorile_(O) :- main_orile_Connection(O). objids(O) :- main_le_Device(O). objexistsle_(O) :- main_le_Device(O). objids(O) :- main_le_Connection(O). objexistsle_(O) :- main_le_Connection(O). objexiststargetle_(O) :- main_targetle_Device(O). objexiststargetle_(O) :- main_targetle_Connection(O). 1 {noobj(O); main_targetle_Device(O); main_targetle_Connection(O) } 1 :- objids(O). targetle_Device(O):- main_targetle_Device(O). -targetle_Connection(O):- main_targetle_Device(O). -main_targetle_Connection(O):- main_le_Device(O). targetle_Connection(O):- main_targetle_Connection(O). -targetle_Device(O):- main_targetle_Connection(O). -main_targetle_Device(O):- main_le_Connection(O). enoughCapacity_111(P0,P1,RS) :- targetle_edge_Device_outgoing(P0,P1),targetle_prop_Connection_speed(P1,RS),targetle_Device(P0),targetle_Connection(P1). enoughCapacity_11(R) :- R = #sum{R2,enoughCapacity_111(P0,P1,R2):enoughCapacity_111(P0,P1,R2)}, typeInteger(R). enoughCapacity_1(R) :- enoughCapacity_11(Ra),Rb = 4,R=Ra *4. enoughCapacity_211(P0,P1,RS) :- targetle_edge_Device_incoming(P0,P1),targetle_prop_Connection_speed(P1,RS),targetle_Device(P0),targetle_Connection(P1). enoughCapacity_21(R) :- R = #sum{R2,enoughCapacity_211(P0,P1,R2):enoughCapacity_211(P0,P1,R2)}, typeInteger(R). enoughCapacity_2(R) :- enoughCapacity_21(Ra),Rb = 5,R=Ra *5. enoughCapacity_() :- enoughCapacity_1(R1),enoughCapacity_2(R2),R1 >= R2. -enoughCapacity_() :- enoughCapacity_1(R1),enoughCapacity_2(R2), R1 < R2. :- not enoughCapacity_().