:- dynamic ct/3. :- multifile ct/3. ct(initialize(E), ( not(initNode(E)) ),( add(initNode(E)) )). ct(addCloudNode(C), ( initNode(_)%, %not( % standbyN(S)), %D \= S, %not(backupRelation(_,D,_1) ),( add(cloudNode(C)) )). ct(addServerToCloud(C,S), ( cloudNode(C) ),( add(serverNode(S)), add(onCloudRelation(_,S,C)) )). ct(addClusterToCloud(C,Cl), ( cloudNode(C) ),( add(clusterNode(Cl)), add(onCloudRelation(_,Cl,C)) )). ct(addServerToCluster(Cl,S), ( clusterNode(Cl)%, %not( % onClusterRelation(_r1,_1,Cl), % onClusterRelation(_r2,_2,Cl) %) ),( add(serverNode(S)), add(onClusterRelation(_,S,Cl)) )). ct(addDBToServer(S1,S2,D), ( serverNode(S1), serverNode(S2), not( onServerRelation(_r1,D1,S1), onServerRelation(_r2,D1,S2) ) ),( add(dbNode(D)), add(onServerRelation(_1,D,S1)), add(onServerRelation(_2,D,S2)) )). ct(addAppToDB(D1,D2,A), ( dbNode(D1), dbNode(D2), not( onDBRelation(_r1,A1,D1), onDBRelation(_r2,A1,D2) ) ),( add(appNode(A)), add(onDBRelation(_1,A,D1)), add(onDBRelation(_2,A,D2)) )). ct(addStorageToServer(S1,S2,St), ( serverNode(S1), serverNode(S2), clusterNode(Cl), onClusterRelation(_rc1,S1,Cl), onClusterRelation(_rc2,S2,Cl), not( onServerRelation(_r1,St1,S1), onServerRelation(_r2,St1,S2) ) ),( add(storageNode(St)), add(onServerRelation(_1,St,S1)), add(onServerRelation(_2,St,S2)) )). ct(addAppDependency(A1,A2), ( appNode(A1), appNode(A2), not( depends(_r1,A1,A2) ) ),( add(depends(_1,A1,A2)) )).