diff --git a/benchmark/map/generate_graph_coloring_map.py b/benchmark/map/generate_graph_coloring_map.py
index 9ecee9e..362acd2 100644
--- a/benchmark/map/generate_graph_coloring_map.py
+++ b/benchmark/map/generate_graph_coloring_map.py
@@ -132,15 +132,21 @@ def main():
 
     for idx, l in enumerate(already_in):
         if idx in selected_query_atoms:
-            prefix = "map "
+            if args.aspmc:
+                print(f"{prob_atoms[idx]}::edge({l[0]},{l[1]}).")
+                print(f"query(edge({l[0]},{l[1]})).")
+            else:
+                print(f"map {prob_atoms[idx]}::edge({l[0]},{l[1]}).")
         else:
-            prefix = ""
+            print(f"{prob_atoms[idx]}::edge({l[0]},{l[1]}).")
 
-        print(f"{prefix}{prob_atoms[idx]}::edge({l[0]},{l[1]}).")
 
     flat_list = [item for sublist in already_in for item in sublist]
     for j in range(1, max(flat_list) + 1):
         print(f"node({j}).")
+    
+    if args.aspmc:
+        print("evidence(qr).")
 
 
 if __name__ == "__main__":
diff --git a/benchmark/map/generate_map_benchmarks.py b/benchmark/map/generate_map_benchmarks.py
index 9b29324..3f523ec 100644
--- a/benchmark/map/generate_map_benchmarks.py
+++ b/benchmark/map/generate_map_benchmarks.py
@@ -88,9 +88,16 @@ def print_query_atoms(args : argparse.Namespace):
 
     for idx, p in enumerate(prob_atoms):
         if idx in selected_query_atoms:
-            print(f"map {p}::a{idx}.")
+            if args.aspmc:
+                print(f"{p}::a{idx}.")
+                print(f"query(a{idx}).")
+            else:
+                print(f"map {p}::a{idx}.")
         else:
             print(f"{p}::a{idx}.")
+    
+    if args.aspmc:
+        print("evidence(qr).")
 
 def generate_first_type_programs(args : argparse.Namespace):
     """
diff --git a/benchmark/map/generate_reachability_map.py b/benchmark/map/generate_reachability_map.py
index 1e0a97f..b5384bf 100644
--- a/benchmark/map/generate_reachability_map.py
+++ b/benchmark/map/generate_reachability_map.py
@@ -33,6 +33,12 @@ def parse_args():
         type=float,
         default=-1
     )
+    
+    command_parser.add_argument(
+        "--aspmc",
+        help="Generate aspmc version with shifted negation",
+        action="store_true"
+    )
 
     command_parser.add_argument(
         "--seed",
@@ -68,16 +74,23 @@ def print_query_atoms(args : argparse.Namespace):
 
     for idx, p in enumerate(prob_atoms):
         if idx in selected_query_atoms:
-            print(f"map {p}::node({idx}).")
+            if args.aspmc:
+                print(f"{p}::node({idx}).")
+                print(f"query(node({idx})).")
+            else:
+                print(f"map {p}::node({idx}).")
         else:
             print(f"{p}::node({idx}).")
 
+    if args.aspmc:
+        print("evidence(qr).")
 
 def main():
     """
     Main.
     """
     args = parse_args()
+    print(f"% {args}")
     random.seed(args.seed)
     
     print("reaches(X,Y) :- edge(X,Y), node(X), node(Y).")
diff --git a/benchmark/map/generate_smokers_map.py b/benchmark/map/generate_smokers_map.py
index 7bc521b..c781dcd 100644
--- a/benchmark/map/generate_smokers_map.py
+++ b/benchmark/map/generate_smokers_map.py
@@ -61,6 +61,7 @@ def main():
     Main body.
     """
     args = parse_args()
+    print(f"% {args}")
     if args.n < 1:
         print("n must be at least 2.")
         sys.exit()
@@ -84,7 +85,7 @@ def main():
     
     if args.aspmc:
         print("smokes(X) :- asthma(X), \+ nsmokes(X).")
-        print("nsmokes(X) ; nsmoke(X) :- asthma(X), \+ smokes(X).")
+        print("nsmokes(X) :- asthma(X), \+ smokes(X).")
     else:
         print("smokes(X) ; nsmokes(X) :- asthma(X).")
 
@@ -113,14 +114,20 @@ def main():
 
     for prob, f, idx in zip(prob_atoms,expanded_names,range(0,n_prob_f)):
         if idx in selected_query_atoms:
-            prefix = "map "
+            if args.aspmc:
+                print(f"{prob}::{f}.")
+                print(f"query({f}).")
+            else:
+                print(f"map {prob}::{f}.")
         else:
-            prefix = ""
+            print(f"{prob}::{f}.")
 
-        print(f"{prefix}{prob}::{f}.")
     
     for i in range(1, args.n + 1):
         print(f"qr:- smokes({i}).")
+    
+    if args.aspmc:
+        print("evidence(qr).")
 
 if __name__ == "__main__":
     main()
\ No newline at end of file