mirror of https://github.com/StanfordVL/bddl.git
get rid of interim stuff
This commit is contained in:
parent
b7f39f63f9
commit
567c2ceed8
|
@ -1,7 +1,6 @@
|
|||
import json
|
||||
import os
|
||||
import sys
|
||||
# from bddl.bddl_verification import *
|
||||
import bddl.bddl_verification as ver
|
||||
import bddl.parsing as parse
|
||||
|
||||
|
@ -28,13 +27,10 @@ def verify_definition(activity, syns_to_props, domain_predicates, csv=False):
|
|||
ver.no_substances_with_multiple_instances(objects, syns_to_props)
|
||||
ver.agent_present(init)
|
||||
ver.problem_name_correct(activity)
|
||||
if csv:
|
||||
no_filled_in_tm_recipe_goal(activity)
|
||||
sync_csv(activity)
|
||||
|
||||
|
||||
# Master planning sheet
|
||||
def batch_verify_all(csv=False):
|
||||
def batch_verify():
|
||||
with open(ver.SYNS_TO_PROPS_JSON, "r") as f:
|
||||
syns_to_props = json.load(f)
|
||||
*__, domain_predicates = parse.parse_domain("omnigibson")
|
||||
|
@ -43,159 +39,15 @@ def batch_verify_all(csv=False):
|
|||
if not os.path.isdir(os.path.join(ver.PROBLEM_FILE_DIR, activity)): continue
|
||||
print()
|
||||
print(activity)
|
||||
if os.path.exists(os.path.join(ver.CSVS_DIR, activity + ".csv")):
|
||||
try:
|
||||
verify_definition(activity, syns_to_props, domain_predicates, csv=csv)
|
||||
except FileNotFoundError:
|
||||
print()
|
||||
print("file not found for", activity)
|
||||
continue
|
||||
except AssertionError as e:
|
||||
print()
|
||||
print(activity)
|
||||
print(e)
|
||||
to_continue = input("continue? y/n: ")
|
||||
while to_continue != "y":
|
||||
to_continue = input("continue? y/n: ")
|
||||
continue
|
||||
else:
|
||||
verify_definition(activity, syns_to_props, domain_predicates, csv=False)
|
||||
|
||||
|
||||
def unpack_nested_lines(sec):
|
||||
'''
|
||||
takes in a list of lines such as init or goal
|
||||
returns non-nested sublines (i.e. unpacks forall statements, or statements, etc.) that describe object(s)
|
||||
does not preserve order, because order doesn't matter when scanning through all lines
|
||||
'''
|
||||
lines = sec.copy()
|
||||
res = []
|
||||
while lines:
|
||||
line = lines.pop(0)
|
||||
|
||||
if type(line[1]) is list:
|
||||
for subline in line[1:]:
|
||||
if len(subline) >= 2 and '-' not in subline:
|
||||
lines.append(subline)
|
||||
else:
|
||||
res.append(line)
|
||||
|
||||
return res
|
||||
|
||||
|
||||
# Transition maps
|
||||
|
||||
def no_filled_in_tm_recipe_goal(activity):
|
||||
defn_fn = os.path.join(ver.PROBLEM_FILE_DIR, activity, "problem0.bddl")
|
||||
with open(defn_fn, "r") as f:
|
||||
defn = f.read()
|
||||
goal_section = defn.split(":goal")[-1]
|
||||
assert "filled" not in goal_section, "filled in TM BDDL :goal"
|
||||
|
||||
csv = os.path.join(ver.CSVS_DIR, activity + ".csv")
|
||||
with open(csv, "r") as f:
|
||||
lines = list(f.readlines())
|
||||
container_lines = [lines[i + 1] for i in range(len(lines) - 1) if "container," in lines[i]]
|
||||
for container_line in container_lines:
|
||||
assert "filled" not in container_line, f"filled in TM CSV container line: {container_line}"
|
||||
|
||||
|
||||
def sync_csv(activity):
|
||||
csv = os.path.join(ver.CSVS_DIR, activity + ".csv")
|
||||
|
||||
csv_objs = set()
|
||||
bddl_objs = set()
|
||||
bddl_ignore = set()
|
||||
|
||||
with open(csv) as f:
|
||||
output_objs = []
|
||||
output_flag = False
|
||||
for row in f:
|
||||
first = row.split(',')[0]
|
||||
# collect output objects
|
||||
# remove if they weren't the last step
|
||||
if first == 'output-objects':
|
||||
output_flag = True
|
||||
# removing objects here allows us to exclude input objects which are outputs of the previous step
|
||||
csv_objs.difference_update(output_objs)
|
||||
output_objs = []
|
||||
if '.n.' in first:
|
||||
csv_objs.add(first)
|
||||
if output_flag == True:
|
||||
output_objs.append(first)
|
||||
if first == "tool":
|
||||
output_flag = False
|
||||
|
||||
csv_objs.discard('')
|
||||
|
||||
__, objects, init, _ = _get_defn_elements_from_file(activity)
|
||||
bddl_objs, _ = _get_objects_from_object_list(objects)
|
||||
for literal in init:
|
||||
formula = literal[1] if literal[0] == "not" else literal
|
||||
#things to ignore
|
||||
if formula[0] in ["insource", "filled"]:
|
||||
bddl_ignore.add(formula[1])
|
||||
things_to_ignore = [
|
||||
# can't put jar here because sometimes output container is a mason_jar
|
||||
"countertop",
|
||||
"bottle",
|
||||
"sack",
|
||||
"agent.n.01",
|
||||
"floor.n.01",
|
||||
"electric_refrigerator.n.01",
|
||||
"cabinet.n.01",
|
||||
"tupperware.n.01"
|
||||
]
|
||||
for obj in list(bddl_objs):
|
||||
for thing in things_to_ignore:
|
||||
if thing in obj:
|
||||
bddl_objs.remove(obj)
|
||||
|
||||
bddl_objs = bddl_objs - bddl_ignore
|
||||
|
||||
assert len(csv_objs - bddl_objs) == 0 and len(bddl_objs - csv_objs) == 0, f"Items in csv but not bddl: {csv_objs - bddl_objs} \nItems in bddl but not csv: {bddl_objs - csv_objs}"
|
||||
|
||||
|
||||
def batch_sync_csv():
|
||||
for fname in os.listdir(ver.CSVS_DIR):
|
||||
activity = fname[:-len(".csv")]
|
||||
print()
|
||||
print(activity)
|
||||
try:
|
||||
sync_csv(activity)
|
||||
except FileNotFoundError:
|
||||
print()
|
||||
print("file not found for", activity)
|
||||
continue
|
||||
except AssertionError as e:
|
||||
print()
|
||||
print(activity)
|
||||
print(e)
|
||||
to_continue = input("continue? y/n: ")
|
||||
while to_continue != "y":
|
||||
to_continue = input("continue? y/n: ")
|
||||
continue
|
||||
|
||||
verify_definition(activity, syns_to_props, domain_predicates, csv=False)
|
||||
|
||||
|
||||
def main():
|
||||
if sys.argv[1] == "verify":
|
||||
verify_definition(sys.argv[2])
|
||||
|
||||
elif sys.argv[1] == "verify_csv":
|
||||
verify_definition(sys.argv[2], csv=True)
|
||||
|
||||
elif sys.argv[1] == "batch_verify":
|
||||
batch_verify_all()
|
||||
|
||||
elif sys.argv[1] == "batch_verify_csv":
|
||||
batch_verify_all(csv=True)
|
||||
|
||||
elif sys.argv[1] == "sync_csv":
|
||||
sync_csv(sys.argv[2])
|
||||
|
||||
elif sys.argv[1] == "batch_sync_csv":
|
||||
batch_sync_csv()
|
||||
batch_verify()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -1,368 +0,0 @@
|
|||
import json
|
||||
import os
|
||||
import pathlib
|
||||
import re
|
||||
|
||||
import bddl
|
||||
from bddl.data_generation.tm_submap_params import TM_SUBMAPS_TO_PARAMS
|
||||
from bddl.parsing import parse_problem, parse_domain
|
||||
|
||||
# Files
|
||||
BDDL_DIR = pathlib.Path(bddl.__file__).parent
|
||||
|
||||
PROBLEM_FILE_DIR = BDDL_DIR / "activity_definitions"
|
||||
PROPS_TO_SYNS_JSON = BDDL_DIR / "generated_data/properties_to_synsets.json"
|
||||
SYNS_TO_PROPS_JSON = BDDL_DIR / "generated_data/propagated_annots_canonical.json"
|
||||
CSVS_DIR = "tm_csvs"
|
||||
|
||||
# Constants
|
||||
|
||||
*__, domain_predicates = parse_domain("omnigibson")
|
||||
UNARIES = [predicate for predicate, inputs in domain_predicates.items() if len(inputs) == 1]
|
||||
BINARIES = [predicate for predicate, inputs in domain_predicates.items() if len(inputs) == 2]
|
||||
|
||||
VALID_ATTACHMENTS = set([
|
||||
("mixing_bowl.n.01", "electric_mixer.n.01"),
|
||||
("cork.n.04", "wine_bottle.n.01"),
|
||||
("menu.n.01", "wall.n.01"),
|
||||
("broken__light_bulb.n.01", "table_lamp.n.01"),
|
||||
("light_bulb.n.01", "table_lamp.n.01"),
|
||||
("lens.n.01", "digital_camera.n.01"),
|
||||
("screen.n.01", "wall.n.01"),
|
||||
("antler.n.01", "wall.n.01"),
|
||||
("skateboard_wheel.n.01", "skateboard.n.01"),
|
||||
("blackberry.n.01", "scrub.n.01"),
|
||||
("raspberry.n.02", "scrub.n.01"),
|
||||
("dip.n.07", "candlestick.n.01"),
|
||||
("sign.n.02", "wall.n.01"),
|
||||
("wreath.n.01", "wall.n.01"),
|
||||
("bow.n.08", "wall.n.01"),
|
||||
("holly.n.03", "wall.n.01"),
|
||||
("curtain_rod.n.01", "wall.n.01"),
|
||||
("bicycle.n.01", "bicycle_rack.n.01"),
|
||||
("bicycle_rack.n.01", "wall.n.01"),
|
||||
("dartboard.n.01", "wall.n.01"),
|
||||
("rug.n.01", "wall.n.01"),
|
||||
("fairy_light.n.01", "wall.n.01"),
|
||||
("lantern.n.01", "wall.n.01"),
|
||||
("address.n.05", "wall.n.01"),
|
||||
("hanger.n.02", "wardrobe.n.01"),
|
||||
("flagpole.n.02", "wall.n.01"),
|
||||
("picture_frame.n.01", "wall.n.01"),
|
||||
("wind_chime.n.01", "pole.n.01"),
|
||||
("pole.n.01", "wall.n.01"),
|
||||
("hook.n.05", "trailer_truck.n.01"),
|
||||
("fire_alarm.n.02", "wall.n.01"),
|
||||
("poster.n.01", "wall.n.01"),
|
||||
("painting.n.01", "wall.n.01"),
|
||||
("hanger.n.02", "coatrack.n.01"),
|
||||
("license_plate.n.01", "car.n.01"),
|
||||
("gummed_label.n.01", "license_plate.n.01"),
|
||||
("wallpaper.n.01", "wall.n.01"),
|
||||
("mirror.n.01", "wall.n.01"),
|
||||
("webcam.n.02", "desktop_computer.n.01"),
|
||||
("kayak.n.01", "kayak_rack.n.01"),
|
||||
("kayak_rack.n.01", "wall.n.01"),
|
||||
("trout.n.01", "fishing_rod.n.01"),
|
||||
("bicycle_rack.n.01", "recreational_vehicle.n.01"),
|
||||
])
|
||||
|
||||
VALID_ROOMS = set()
|
||||
|
||||
OBJECT_INSTANCE_RE = r"[A-Za-z-_]+\.n\.[0-9]+_[0-9]+"
|
||||
OBJECT_CAT_RE = r"[A-Za-z-_]+\.n\.[0-9]+$"
|
||||
OBJECT_CAT_AND_INST_RE = r"[A-Za-z-_]+\.n\.[0-9]+"
|
||||
SINGLE_CAT_QUANTS = ["forall", "exists", "forn"]
|
||||
DOUBLE_CAT_QUANTS = ["forpairs", "fornpairs"]
|
||||
ROOMS = set([
|
||||
"kitchen",
|
||||
"dining_room",
|
||||
"living_room",
|
||||
"utility_room",
|
||||
"empty_room",
|
||||
"bedroom",
|
||||
"bathroom",
|
||||
"garden",
|
||||
"shared_office",
|
||||
"corridor",
|
||||
"classroom",
|
||||
"grocery_store",
|
||||
"computer_lab",
|
||||
"playroom",
|
||||
"sauna",
|
||||
"childs_room",
|
||||
"garage",
|
||||
"closet",
|
||||
"storage_room",
|
||||
"entryway",
|
||||
"private_office",
|
||||
"meeting_room",
|
||||
"bar",
|
||||
"staircase",
|
||||
"spa",
|
||||
"television_room",
|
||||
"lobby"
|
||||
])
|
||||
PLACEMENTS = set([
|
||||
# "connected",
|
||||
"ontop",
|
||||
"inside",
|
||||
"under",
|
||||
"filled",
|
||||
"covered",
|
||||
"overlaid",
|
||||
"saturated",
|
||||
"inroom",
|
||||
"insource",
|
||||
# "hung",
|
||||
"future",
|
||||
"attached",
|
||||
"draped",
|
||||
"contains"
|
||||
])
|
||||
SUBSTANCE_PLACEMENTS = set(["saturated", "filled", "covered", "insource", "contains"])
|
||||
FUTURE_PREDICATE = "future"
|
||||
|
||||
|
||||
# Helpers
|
||||
|
||||
def _traverse_goal_for_objects(expr, objects=None):
|
||||
objects = objects if objects is not None else set()
|
||||
# Check that category declarations in quantifiers are really categories, and equal
|
||||
if expr[0] in ["forall", "exists", "forpairs"]:
|
||||
term, __, cat = expr[1]
|
||||
assert term.strip("?") == cat, f"mismatched term and cat declaration: {term}, {cat}"
|
||||
assert re.match(OBJECT_CAT_RE, term.strip("?")) is not None, f"non-category term in quantifier declaration: {term}"
|
||||
if expr[0] in ["forpairs"]:
|
||||
term, __, cat = expr[2]
|
||||
assert term.strip("?") == cat, f"mismatched term and cat declaration: {term}, {cat}"
|
||||
assert re.match(OBJECT_CAT_RE, term.strip("?")) is not None, f"non-category term in quantifier declaration: {term}"
|
||||
_traverse_goal_for_objects(expr[-1], objects=objects)
|
||||
if expr[0] in ["forn", "fornpairs"]:
|
||||
term, __, cat = expr[2]
|
||||
assert term.strip("?") == cat, f"mismatched term and cat declaration: {term}, {cat}"
|
||||
assert re.match(OBJECT_CAT_RE, term.strip("?")) is not None, f"non-category term in quantifier declaration: {term}"
|
||||
if expr[0] == "fornpairs":
|
||||
term, __, cat = expr[3]
|
||||
assert term.strip("?") == cat, f"mismatched term and cat declaration: {term}, {cat}"
|
||||
assert re.match(OBJECT_CAT_RE, term.strip("?")) is not None, f"non-category term in quantifier declaration: {term}"
|
||||
_traverse_goal_for_objects(expr[-1], objects=objects)
|
||||
|
||||
# Check the subexpr for atomic formulae in base case, else recurse
|
||||
if type(expr[-1]) is not list:
|
||||
for obj in expr[1:]:
|
||||
assert re.match(OBJECT_CAT_AND_INST_RE, obj.strip("?")) is not None, f"malformed object term in goal: {obj}"
|
||||
objects.add(obj.strip("?"))
|
||||
else:
|
||||
if expr[0] in ["and", "or"]:
|
||||
for subexpr in expr[1:]:
|
||||
_traverse_goal_for_objects(subexpr, objects=objects)
|
||||
else:
|
||||
_traverse_goal_for_objects(expr[-1], objects=objects)
|
||||
|
||||
|
||||
def _get_defn_elements_from_file(activity):
|
||||
defn_fn = os.path.join(PROBLEM_FILE_DIR, activity, 'problem0.bddl')
|
||||
with open(defn_fn, "r") as f:
|
||||
__, objects, init, goal = parse_problem(activity, 0, "omnigibson", predefined_problem=f.read())
|
||||
return activity, objects, init, goal
|
||||
|
||||
|
||||
def _get_objects_from_object_list(objects):
|
||||
instances, categories = set(), set()
|
||||
for cat, insts in objects.items():
|
||||
categories.add(cat)
|
||||
for inst in insts:
|
||||
instances.add(inst)
|
||||
return instances, categories
|
||||
|
||||
|
||||
def _get_instances_in_init(init):
|
||||
'''
|
||||
Take a parsed :init condition and return a set of all instances in it.
|
||||
'''
|
||||
init_insts = set()
|
||||
for literal in init:
|
||||
formula = literal[1] if literal[0] == "not" else literal
|
||||
for inst in formula[1:]:
|
||||
assert (re.match(OBJECT_INSTANCE_RE, inst) is not None) or (inst in ROOMS), f":init has category: {inst}"
|
||||
if inst not in ROOMS:
|
||||
init_insts.add(inst)
|
||||
return init_insts
|
||||
|
||||
|
||||
def _get_objects_in_goal(goal):
|
||||
goal_objects = set()
|
||||
goal = ["and"] + goal
|
||||
_traverse_goal_for_objects(goal, goal_objects)
|
||||
return goal_objects
|
||||
|
||||
|
||||
def _traverse_goal_for_atoms(expr, goal_atoms):
|
||||
if all(type(subexpr) == str for subexpr in expr):
|
||||
goal_atoms.append(expr)
|
||||
elif expr[0] in ["and", "or"]:
|
||||
for subexpr in expr[1:]:
|
||||
_traverse_goal_for_atoms(subexpr, goal_atoms)
|
||||
elif expr[0] in ["forall", "exists", "forn", "forpairs", "fornpairs"]:
|
||||
_traverse_goal_for_atoms(expr[-1], goal_atoms)
|
||||
elif expr[0] == "imply":
|
||||
_traverse_goal_for_atoms(expr[1], goal_atoms)
|
||||
_traverse_goal_for_atoms(expr[2], goal_atoms)
|
||||
elif expr[0] == "not":
|
||||
_traverse_goal_for_atoms(expr[1], goal_atoms)
|
||||
else:
|
||||
raise ValueError(f"Unhandled logic operator {expr[0]}")
|
||||
|
||||
|
||||
def _get_atoms_in_goal(goal):
|
||||
goal_atoms = []
|
||||
for goal_expr in goal:
|
||||
_traverse_goal_for_atoms(goal_expr, goal_atoms)
|
||||
return goal_atoms
|
||||
|
||||
|
||||
def _get_unique_items_from_transition_map():
|
||||
obj_set = set()
|
||||
for fname in glob.glob(CSVS_DIR):
|
||||
with open(fname) as f:
|
||||
for row in f:
|
||||
first = row.split(',')[0]
|
||||
if '.n.' in first:
|
||||
obj_set.add(first.rpartition('_')[0])
|
||||
|
||||
obj_set.remove('')
|
||||
|
||||
for obj in obj_set:
|
||||
print(obj)
|
||||
|
||||
|
||||
def is_specific_container_synset(synset):
|
||||
return "__" in synset and "__of__" not in synset and "diced__" not in synset and "cooked__" not in synset and "half__" not in synset
|
||||
|
||||
|
||||
def check_synset_predicate_alignment(atom, syns_to_props):
|
||||
if atom[0] == "ontop" and atom[1] == "agent.n.01_1":
|
||||
return
|
||||
|
||||
pred, *object_insts = atom
|
||||
objects = []
|
||||
for object_inst in object_insts:
|
||||
syn_match = re.match(OBJECT_CAT_AND_INST_RE, object_inst.strip("?"))
|
||||
if syn_match is not None:
|
||||
objects.append(syn_match.group())
|
||||
elif True: # object_inst in VALID_ROOMS: # TODO uncomment when VALID_ROOMS is populated
|
||||
if pred == "inroom":
|
||||
objects.append(object_inst)
|
||||
else:
|
||||
raise AssertionError(f"Nonsynset {object_inst} outside inroom")
|
||||
else:
|
||||
raise AssertionError(f"Invalid room {object_inst}")
|
||||
assert (pred in UNARIES) or (pred in BINARIES), f"Invalid predicate: {pred}"
|
||||
assert ((pred in UNARIES) and (len(objects) == 1)) or ((pred in BINARIES) and (len(objects) == 2)), f"Atom has wrong arity: {atom}"
|
||||
|
||||
# Unaries
|
||||
if pred == "cooked":
|
||||
assert "cookable" in syns_to_props[objects[0]], f"Inapplicable cooked: {atom}"
|
||||
if pred == "frozen":
|
||||
assert "freezable" in syns_to_props[objects[0]], f"Inapplicable frozen: {atom}"
|
||||
if pred == "closed" or pred == "open":
|
||||
assert "openable" in syns_to_props[objects[0]], f"Inapplicable closed/open: {atom}"
|
||||
if pred == "folded" or pred == "unfolded":
|
||||
assert "drapeable" in syns_to_props[objects[0]], f"Inapplicable folded/unfolded: {atom}"
|
||||
if pred == "toggled_on":
|
||||
assert "toggleable" in syns_to_props[objects[0]], f"Inapplicable toggled_on: {atom}"
|
||||
if pred == "hot":
|
||||
assert "heatable" in syns_to_props[objects[0]], f"Inapplicable hot: {atom}"
|
||||
if pred == "on_fire":
|
||||
assert "flammable" in syns_to_props[objects[0]], f"Inapplicable on_fire: {atom}"
|
||||
if pred == "assembled":
|
||||
assert "assembleable" in syns_to_props[objects[0]], f"Inapplicable assembled: {atom}"
|
||||
if pred == "broken":
|
||||
assert "breakable" in syns_to_props[objects[0]], f"Inapplicable broken: {atom}"
|
||||
|
||||
# Binaries
|
||||
if pred == "saturated":
|
||||
assert ("particleRemover" in syns_to_props[objects[0]]) and ("substance" in syns_to_props[objects[1]]), f"Inapplicable saturated: {atom}"
|
||||
if pred == "covered":
|
||||
assert ("nonSubstance" in syns_to_props[objects[0]]) and ("substance" in syns_to_props[objects[1]]), f"Inapplicable covered: {atom}"
|
||||
if pred == "filled":
|
||||
assert ("fillable" in syns_to_props[objects[0]]) and ("physicalSubstance" in syns_to_props[objects[1]]), f"Inapplicable filled/empty: {atom}"
|
||||
if pred == "contains" or pred == "empty":
|
||||
assert ("fillable" in syns_to_props[objects[0]]) and ("substance" in syns_to_props[objects[1]]), f"Inapplicable contains: {atom}"
|
||||
if pred == "ontop":
|
||||
assert ("nonSubstance" in syns_to_props[objects[0]]) and ("nonSubstance" in syns_to_props[objects[1]]), f"Inapplicable ontop: {atom}"
|
||||
if pred == "nextto":
|
||||
assert ("nonSubstance" in syns_to_props[objects[0]]) and ("nonSubstance" in syns_to_props[objects[1]]), f"Inapplicable nextto: {atom}"
|
||||
if pred == "under":
|
||||
assert ("nonSubstance" in syns_to_props[objects[0]]) and ("rigidBody" in syns_to_props[objects[1]]), f"Inapplicable under: {atom}"
|
||||
if pred == "touching":
|
||||
assert ("rigidBody" in syns_to_props[objects[0]]) and ("rigidBody" in syns_to_props[objects[1]]), f"Inapplicable touching: {atom}"
|
||||
if pred == "inside":
|
||||
assert ("nonSubstance" in syns_to_props[objects[0]]) and ("nonSubstance" in syns_to_props[objects[1]]), f"Inapplicable inside: {atom}"
|
||||
if pred == "overlaid":
|
||||
assert ("drapeable" in syns_to_props[objects[0]]) and ("rigidBody" in syns_to_props[objects[1]]), f"Inapplicable overlaid: {atom}"
|
||||
if pred == "attached":
|
||||
assert tuple(objects) in VALID_ATTACHMENTS, f"Inapplicable attached: {atom}"
|
||||
if pred == "draped":
|
||||
assert ("drapeable" in syns_to_props[objects[0]]) and ("rigidBody" in syns_to_props[objects[1]]), f"Inapplicable overlaid: {atom}"
|
||||
if pred == "insource":
|
||||
assert (("particleSource" in syns_to_props[objects[0]]) or ("particleApplier" in syns_to_props[objects[0]])) and ("substance" in syns_to_props[objects[1]]), f"Inapplicable insource: {atom}"
|
||||
|
||||
|
||||
def check_clashing_transition_rules():
|
||||
# Check within each submap
|
||||
for submap_name in TM_SUBMAPS_TO_PARAMS:
|
||||
with open(os.path.join("..", "bddl", "generated_data", "transition_map", "tm_jsons", submap_name + ".json"), "r") as f:
|
||||
submap = json.load(f)
|
||||
seen_object_sets = []
|
||||
for rule in submap:
|
||||
# Get relevant parameters
|
||||
rule_name = rule.get("rule_name", "No name")
|
||||
input_objects = rule.get("input_objects", {})
|
||||
input_states = rule.get("input_states", {})
|
||||
input_states = input_states if input_states is not None else {}
|
||||
if submap_name == "heat_cook":
|
||||
equipment = set([list(rule["heat_source"].keys())[0], list(rule["container"].keys())[0]])
|
||||
elif submap_name == "single_toggleable_machine":
|
||||
equipment = set([list(rule["machine"].keys())[0]])
|
||||
else:
|
||||
equipment = set() # Equivalence will pass trivially when checked, because this rule already clashes
|
||||
output_objects = rule.get("output_objects", {})
|
||||
output_states = rule.get("output_states", {})
|
||||
output_states = output_states if output_states is not None else {}
|
||||
|
||||
# NOTE doing input_objects.keys, not input_objects.items, because simulator is not actually sensitive to amount. It only checks for category,
|
||||
# so different amounts but same categories still need to result in the same output.
|
||||
|
||||
# Collect all sets of input objects to check subsetting
|
||||
input_objects = set(sorted(input_objects.keys(), key=lambda x: x[0]))
|
||||
output_objects = set(sorted(output_objects.keys(), key=lambda x: x[0]))
|
||||
input_states_strs = set([syns + "@" + ";".join([f"{pred}:{val}" for pred, val in sorted(states, key=lambda x: x[0])]) for syns, states in sorted(input_states.items(), key=lambda x: x[0])])
|
||||
output_states_strs = set([syns + "@" + ";".join([f"{pred}:{val}" for pred, val in sorted(states, key=lambda x: x[0])]) for syns, states in sorted(output_states.items(), key=lambda x: x[0])])
|
||||
for seen_rule_name, seen_object_set, seen_states_set, seen_equipment, seen_output_objects, seen_output_states in seen_object_sets:
|
||||
# If we see that our next input objects set is a subset or superset...
|
||||
if input_objects.issuperset(seen_object_set) or input_objects.issubset(seen_object_set):
|
||||
# Construct a set of atomic formulae in string format
|
||||
if input_states_strs.issuperset(seen_states_set) or input_states_strs.issubset(seen_states_set):
|
||||
if equipment == seen_equipment:
|
||||
# At this point, the output needs to be identical
|
||||
if not output_objects == seen_output_objects or not output_states_strs == seen_output_states:
|
||||
raise AssertionError(f"Clashing rules with input objects {rule_name} and {seen_rule_name} in submap {submap_name}.")
|
||||
|
||||
seen_object_sets.append((rule_name, input_objects, input_states_strs, equipment, output_objects, output_states_strs))
|
||||
|
||||
# Check heat_cook rules vs cooking individual items, since those are a potential clash that we know of
|
||||
# for activity in os.listdir(PROBLEM_FILE_DIR):
|
||||
# if not os.path.isdir(os.path.join(PROBLEM_FILE_DIR, activity)): continue
|
||||
# __, objects, init, goal = _get_defn_elements_from_file(activity)
|
||||
|
||||
# # Check for a rigid body ending cooked and starting not cooked/cook state unspecified, or a future clause for a cooked substance
|
||||
# for cooking_rigids:
|
||||
|
||||
|
||||
# NOTE other heuristics as we discover them
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_clashing_transition_rules()
|
|
@ -1,30 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
raw_egg.n.01_1,
|
||||
raw_egg.n.01_2,
|
||||
vanilla.n.02_1,
|
||||
melted__butter.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
sugar_cookie_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 2,
|
||||
input-objects,
|
||||
sugar_cookie_dough.n.01_1,not cooked
|
||||
output-objects,
|
||||
sugar_cookie.n.01_1,cooked
|
||||
sugar_cookie.n.01_2,cooked
|
||||
sugar_cookie.n.01_3,cooked
|
||||
sugar_cookie.n.01_4,cooked
|
||||
sugar_cookie.n.01_5,cooked
|
||||
sugar_cookie.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,31 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
raw_egg.n.01_1,
|
||||
vanilla.n.02_1,
|
||||
melted__butter.n.01_1,
|
||||
sodium_carbonate.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
output-objects,
|
||||
sugar_cookie_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 2,
|
||||
input-objects,
|
||||
sugar_cookie_dough.n.01_1,not cooked
|
||||
output-objects,
|
||||
sugar_cookie.n.01_1,cooked
|
||||
sugar_cookie.n.01_2,cooked
|
||||
sugar_cookie.n.01_3,cooked
|
||||
sugar_cookie.n.01_4,cooked
|
||||
sugar_cookie.n.01_5,cooked
|
||||
sugar_cookie.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
||||
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
coffee_bean.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
drip_coffee.n.01_1,
|
||||
tool,
|
||||
coffee_maker.n.01_1,
|
||||
container,
|
||||
mug.n.04_1,contains
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
seawater.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
stockpot.n.01_1,contains
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
instant_coffee.n.01_1,
|
||||
cane_sugar.n.02_1,
|
||||
chocolate_milk.n.01_1,
|
||||
ice_cube.n.01_1,
|
||||
ice_cube.n.01_2,
|
||||
ice_cube.n.01_3,
|
||||
output-objects,
|
||||
iced_cappuccino.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
cup.n.01_1,contains
|
|
|
@ -1,22 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
instant_coffee.n.01_1,
|
||||
output-objects,
|
||||
espresso.n.01_1,
|
||||
tool,
|
||||
coffee_maker.n.01_1,
|
||||
container,
|
||||
teacup.n.02_1,contains
|
||||
STEP 2 ,
|
||||
input-objects,
|
||||
espresso.n.01_1,
|
||||
cane_sugar.n.02_1,
|
||||
whole_milk.n.01_1,
|
||||
foam.n.01_1,
|
||||
output-objects,
|
||||
cappuccino.n.01_1,
|
||||
tool,
|
||||
stirrer.n.02_1,
|
||||
container,
|
||||
teacup.n.02_1,contains
|
|
|
@ -1,39 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
raw_egg.n.01_1,
|
||||
cane_sugar.n.02_1,
|
||||
lemon_juice.n.01_1,
|
||||
vanilla.n.02_1,
|
||||
cream_cheese.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
cheese_pastry_filling.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
||||
STEP 2,
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
butter.n.01_1,
|
||||
flour.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
pastry.n.01_1,
|
||||
tool,
|
||||
food_processor.n.01_1,
|
||||
STEP 3,
|
||||
input-objects,
|
||||
pastry.n.01_1,not cooked
|
||||
cheese_pastry_filling.n.01_1,
|
||||
output-objects,
|
||||
cheese_tart.n.01_1,cooked
|
||||
cheese_tart.n.01_2,cooked
|
||||
cheese_tart.n.01_3,cooked
|
||||
cheese_tart.n.01_4,cooked
|
||||
cheese_tart.n.01_5,cooked
|
||||
cheese_tart.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,16 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
instant_coffee.n.01_1,
|
||||
cane_sugar.n.02_1,
|
||||
ice_cube.n.01_1,
|
||||
ice_cube.n.01_2,
|
||||
ice_cube.n.01_3,
|
||||
ice_cube.n.01_4,
|
||||
scoop_of_ice_cream.n.01_1,
|
||||
output-objects,
|
||||
milkshake.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
cup.n.01_1,contains
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
whole_milk.n.01_1,
|
||||
chocolate_sauce.n.01_1,
|
||||
scoop_of_ice_cream.n.01_1,
|
||||
output-objects,
|
||||
milkshake.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
cup.n.01_1,contains
|
|
|
@ -1,19 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
tomato_sauce.n.01_1,
|
||||
olive_oil.n.01_1,
|
||||
clove.n.03_1,
|
||||
clove.n.03_2,
|
||||
clove.n.03_3,
|
||||
basil.n.03_1,
|
||||
basil.n.03_2,
|
||||
basil.n.03_3,
|
||||
basil.n.03_4,
|
||||
ground_beef.n.01_1,
|
||||
rosemary.n.02_1,
|
||||
output-objects,
|
||||
cooked__red_meat_sauce.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepan.n.01_1,contains
|
|
|
@ -1,16 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
strawberry.n.01_1,
|
||||
strawberry.n.01_2,
|
||||
strawberry.n.01_3,
|
||||
ice_cube.n.01_1,
|
||||
ice_cube.n.01_2,
|
||||
ice_cube.n.01_3,
|
||||
ice_cube.n.01_4,
|
||||
lemon_juice.n.01_1,
|
||||
output-objects,
|
||||
smoothie.n.02_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
water_glass.n.02_1,contains
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
ground_coffee.n.01_1,
|
||||
brown_sugar.n.01_1,
|
||||
coconut_oil.n.01_1,
|
||||
output-objects,
|
||||
sugar_coffee_scrub.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
vinegar.n.01_1,
|
||||
water.n.06_1,
|
||||
lemon_juice.n.01_1,
|
||||
output-objects,
|
||||
vinegar_cleaning_solution.n.01_1,
|
||||
tool,
|
||||
tablespoon.n.02_1,
|
||||
container,
|
||||
erlenmeyer_flask.n.01_1,contains
|
|
|
@ -1,14 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
cooking_oil.n.01_1,,
|
||||
flour.n.01_1,,
|
||||
raw_egg.n.01_1,,
|
||||
salt.n.02_1,,
|
||||
veal.n.01_1,not cooked,
|
||||
breadcrumb.n.01_1,,
|
||||
output-objects,,
|
||||
schnitzel.n.01_1,cooked,
|
||||
tool,,
|
||||
stove.n.01_1,,
|
||||
container,,
|
||||
frying_pan.n.01_1,inside,
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
espresso.n.01_1,
|
||||
low-fat_milk.n.01_1,
|
||||
sugar_syrup.n.01_1,
|
||||
output-objects,
|
||||
cafe_au_lait.n.01_1,
|
||||
tool,
|
||||
teaspoon.n.02_1,
|
||||
container,
|
||||
mug.n.04_1,contains
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
apple.n.01_1,
|
||||
apple.n.01_2,
|
||||
apple.n.01_3,
|
||||
water.n.06_1,
|
||||
lemon_juice.n.01_1,
|
||||
cinnamon.n.03_1,
|
||||
granulated_sugar.n.01_1,
|
||||
output-objects,
|
||||
applesauce.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepan.n.01_1,contains
|
|
|
@ -1,27 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
salt.n.02_1,
|
||||
honey.n.01_1,
|
||||
yeast.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
bagel_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 2,
|
||||
input-objects,
|
||||
raw_egg.n.01_1,
|
||||
bagel_dough.n.01_1,not cooked
|
||||
sesame_seed.n.01_1,
|
||||
output-objects,
|
||||
bagel.n.01_1,cooked
|
||||
bagel.n.01_2,cooked
|
||||
bagel.n.01_3,cooked
|
||||
bagel.n.01_4,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
whole_milk.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
pancake_batter.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
||||
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
shortening.n.01_1,
|
||||
whole_milk.n.01_1,
|
||||
output-objects,
|
||||
biscuit_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 2,
|
||||
input-objects,
|
||||
biscuit_dough.n.01_1,not cooked
|
||||
output-objects,
|
||||
biscuit.n.01_1,cooked
|
||||
biscuit.n.01_2,cooked
|
||||
biscuit.n.01_3,cooked
|
||||
biscuit.n.01_4,cooked
|
||||
biscuit.n.01_5,cooked
|
||||
biscuit.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,25 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
lemon_juice.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
blueberry.n.02_1,
|
||||
output-objects,
|
||||
blueberry_compote.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepan.n.01_1,contains
|
||||
STEP 2,
|
||||
input-objects,
|
||||
blueberry_compote.n.01_1,
|
||||
gelatin.n.02_1,
|
||||
raw_egg.n.01_1,
|
||||
cream_of_tartar.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
whipped_cream.n.01_1,
|
||||
output-objects,
|
||||
blueberry_mousse.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,36 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
melted__butter.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
cocoa_powder.n.01_1,
|
||||
vanilla.n.02_1,
|
||||
raw_egg.n.01_1,
|
||||
flour.n.01_1,
|
||||
salt.n.02_1,
|
||||
walnut.n.01_1,
|
||||
walnut.n.01_2,
|
||||
walnut.n.01_3,
|
||||
walnut.n.01_4,
|
||||
walnut.n.01_5,
|
||||
walnut.n.01_6,
|
||||
walnut.n.01_7,
|
||||
output-objects,
|
||||
brownie_batter.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
||||
STEP 2,
|
||||
input-objects,
|
||||
brownie_batter.n.01_1,
|
||||
output-objects,
|
||||
brownie.n.03_1,cooked
|
||||
brownie.n.03_2,cooked
|
||||
brownie.n.03_3,cooked
|
||||
brownie.n.03_4,cooked
|
||||
brownie.n.03_5,cooked
|
||||
brownie.n.03_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,28 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
cherry.n.03_1,
|
||||
cherry.n.03_2,
|
||||
cherry.n.03_3,
|
||||
cherry.n.03_4,
|
||||
cherry.n.03_5,
|
||||
cherry.n.03_6,
|
||||
cherry.n.03_7,
|
||||
cherry.n.03_8,
|
||||
cherry.n.03_9,
|
||||
cherry.n.03_10,
|
||||
cherry.n.03_11,
|
||||
cherry.n.03_12,
|
||||
cherry.n.03_13,
|
||||
cherry.n.03_14,
|
||||
cherry.n.03_15,
|
||||
cherry.n.03_16,
|
||||
granulated_sugar.n.01_1,
|
||||
cornstarch.n.01_1,
|
||||
lemon_juice.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
cherry_filling.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
granulated_sugar.n.01_1,
|
||||
sodium_carbonate.n.01_1,
|
||||
output-objects,
|
||||
cake_mix.n.01_1,
|
||||
tool,
|
||||
spatula.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,44 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
chicken_breast.n.02_1,
|
||||
chicken_breast.n.02_2,
|
||||
chicken_breast.n.02_3,
|
||||
chicken_breast.n.02_4,
|
||||
output-objects,
|
||||
diced__chicken_breast.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 2
|
||||
input-objects,
|
||||
beefsteak_tomato.n.01_1,
|
||||
beefsteak_tomato.n.01_2,
|
||||
output-objects,
|
||||
diced__beefsteak_tomato.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 3
|
||||
input-objects,
|
||||
vidalia_onion.n.01_1,
|
||||
output-objects,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 4,
|
||||
input-objects,
|
||||
diced__chicken_breast.n.01_1,
|
||||
diced__beefsteak_tomato.n.01_1,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
cooking_oil.n.01_1,
|
||||
curry_powder.n.01_1,
|
||||
output-objects,
|
||||
chicken_curry.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
stockpot.n.01_1,contains
|
Can't render this file because it has a wrong number of fields in line 13.
|
|
@ -1,29 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
melted__butter.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
raw_egg.n.01_1,
|
||||
raw_egg.n.01_2,
|
||||
cocoa_powder.n.01_1,
|
||||
chocolate_bar.n.01_1,
|
||||
output-objects,
|
||||
chocolate_cookie_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 2,
|
||||
input-objects,
|
||||
chocolate_cookie_dough.n.01_1,not cooked
|
||||
output-objects,
|
||||
chocolate_biscuit.n.01_1,cooked
|
||||
chocolate_biscuit.n.01_2,cooked
|
||||
chocolate_biscuit.n.01_3,cooked
|
||||
chocolate_biscuit.n.01_4,cooked
|
||||
chocolate_biscuit.n.01_5,cooked
|
||||
chocolate_biscuit.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
granulated_sugar.n.01_1,
|
||||
cocoa_powder.n.01_1,
|
||||
low-fat_milk.n.01_1,
|
||||
output-objects,
|
||||
chocolate_milk.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
water_glass.n.02_1,contains
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
butter.n.01_1,
|
||||
honey.n.01_1,
|
||||
cocoa_powder.n.01_1,
|
||||
output-objects,
|
||||
chocolate_sauce.n.01_1,
|
||||
tool,
|
||||
food_processor.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
granulated_sugar.n.01_1,
|
||||
water.n.06_1,
|
||||
salt.n.02_1,
|
||||
vanilla.n.02_1,
|
||||
cocoa_powder.n.01_1,
|
||||
output-objects,
|
||||
chocolate_sauce.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepan.n.01_1,contains
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
cinnamon.n.03_1,
|
||||
granulated_sugar.n.01_1,
|
||||
output-objects,
|
||||
cinnamon_sugar.n.01_1,
|
||||
tool,
|
||||
tablespoon.n.02_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,12 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
orange_juice.n.01_1,
|
||||
ginger_beer.n.01_1,
|
||||
lemonade.n.01_1,
|
||||
pineapple_juice.n.01_1,
|
||||
output-objects,
|
||||
fruit_punch.n.01_1,
|
||||
tool,
|
||||
wooden_spoon.n.02_1,
|
||||
container,
|
||||
pitcher.n.02_1,contains
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
coffee_bean.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
drip_coffee.n.01_1,
|
||||
tool,
|
||||
coffee_maker.n.01_1,
|
||||
container,
|
||||
mug.n.04_1,contains
|
|
|
@ -1,25 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
butter.n.01_1,
|
||||
output-objects,
|
||||
melted__butter.n.01_1,
|
||||
tool,
|
||||
microwave.n.02_1,toggled_on
|
||||
container,
|
||||
bowl.n.01_1,
|
||||
STEP 2,
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
raw_egg.n.01_1,
|
||||
raw_egg.n.01_2,
|
||||
vanilla.n.02_1,
|
||||
melted__butter.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
sugar_cookie_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
|
|
@ -1,32 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
raw_egg.n.01_1,
|
||||
raw_egg.n.01_2,
|
||||
vanilla.n.02_1,
|
||||
butter.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
cinnamon.n.03_1,
|
||||
nutmeg.n.02_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
spice_cookie_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 2,
|
||||
input-objects,
|
||||
spice_cookie_dough.n.01_1,not cooked
|
||||
output-objects,
|
||||
spice_cookie.n.01_1,cooked
|
||||
spice_cookie.n.01_2,cooked
|
||||
spice_cookie.n.01_3,cooked
|
||||
spice_cookie.n.01_4,cooked
|
||||
spice_cookie.n.01_5,cooked
|
||||
spice_cookie.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
whole_milk.n.01_1,,
|
||||
melted__butter.n.01_1,,
|
||||
output-objects,,
|
||||
heavy_cream.n.01_1,,
|
||||
tool,,
|
||||
electric_mixer.n.01_1,,
|
||||
container,,
|
||||
mixing_bowl.n.01_1,contains,
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
soda_water.n.03_1,
|
||||
heavy_cream.n.01_1,
|
||||
sugar_syrup.n.01_1,
|
||||
output-objects,
|
||||
cream_soda.n.01_1,
|
||||
tool,
|
||||
teaspoon.n.02_1,
|
||||
container,
|
||||
water_glass.n.02_1,contains
|
|
|
@ -1,26 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
flour.n.01_1,,
|
||||
yeast.n.01_1,,
|
||||
salt.n.02_1,,
|
||||
granulated_sugar.n.01_1,,
|
||||
butter.n.01_1,,
|
||||
whole_milk.n.01_1,,
|
||||
output-objects,,
|
||||
roll_dough.n.01_1,not cooked,
|
||||
tool,,
|
||||
electric_mixer.n.01_1,,
|
||||
container,,
|
||||
mixing_bowl.n.01_1,inside,
|
||||
STEP 2,,
|
||||
input-objects,,
|
||||
roll_dough.n.01_1,not cooked,
|
||||
output-objects,,
|
||||
bap.n.01_1,cooked
|
||||
bap.n.01_2,cooked
|
||||
bap.n.01_3,cooked
|
||||
bap.n.01_4,cooked
|
||||
tool,,
|
||||
oven.n.01_1,,
|
||||
container,,
|
||||
cookie_sheet.n.01_1,ontop,
|
Can't render this file because it has a wrong number of fields in line 19.
|
|
@ -1,24 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
flour.n.01_1,,
|
||||
output-objects,,
|
||||
cooked__flour.n.01_1,,
|
||||
tool,,
|
||||
oven.n.01_1,,
|
||||
container,,
|
||||
cookie_sheet.n.01_1,,
|
||||
STEP 2,,
|
||||
input-objects,,
|
||||
cooked__flour.n.01_1,,
|
||||
melted__butter.n.01_1,,
|
||||
granulated_sugar.n.01_1,,
|
||||
brown_sugar.n.01_1,,
|
||||
salt.n.02_1,,
|
||||
vanilla.n.02_1,,
|
||||
jimmies.n.01_1,,
|
||||
output-objects,,
|
||||
edible_cookie_dough.n.01_1,not cooked,
|
||||
tool,,
|
||||
electric_mixer.n.01_1,,
|
||||
container,,
|
||||
mixing_bowl.n.01_1,inside,
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
granulated_sugar.n.01_1,,
|
||||
nutmeg.n.02_1,,
|
||||
cinnamon.n.03_1,,
|
||||
vanilla.n.02_1,,
|
||||
rum.n.01_1,,
|
||||
whole_milk.n.01_1,,
|
||||
raw_egg.n.01_1,,
|
||||
output-objects,,
|
||||
eggnog.n.01_1,,
|
||||
tool,,
|
||||
blender.n.01_1,,
|
||||
container,,
|
||||
water_glass.n.02_1,contains,
|
|
|
@ -1,48 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
lemon.n.01_1,
|
||||
output-objects,
|
||||
diced__lemon.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 2,
|
||||
input-objects,
|
||||
apple.n.01_1,
|
||||
output-objects,
|
||||
diced__apple.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 3,
|
||||
input-objects,
|
||||
orange.n.01_1,
|
||||
output-objects,
|
||||
diced__orange.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 4,
|
||||
input-objects,
|
||||
strawberry.n.01_1,
|
||||
output-objects,
|
||||
diced__strawberry.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 5,
|
||||
input-objects,
|
||||
diced__lemon.n.01_1,
|
||||
diced__strawberry.n.01_1,
|
||||
diced__orange.n.01_1,
|
||||
diced__apple.n.01_1,
|
||||
output-objects,
|
||||
fruit_punch.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
water_glass.n.02_1,contains
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
basil.n.03_1,
|
||||
salt.n.02_1,
|
||||
black_pepper.n.02_1,
|
||||
tomato_juice.n.01_1,
|
||||
cucumber.n.02_1,
|
||||
water.n.06_1,
|
||||
lemon_juice.n.01_1,
|
||||
output-objects,
|
||||
gazpacho.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
bowl.n.01_1,contains
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
oat.n.02_1,
|
||||
honey.n.01_1,
|
||||
cinnamon.n.03_1,
|
||||
pecan.n.03_1,
|
||||
raisin.n.01_1,
|
||||
output-objects,
|
||||
granola.n.01_1,
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,contains
|
|
|
@ -1,20 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
water.n.06_1,,
|
||||
green_tea.n.01_1,,
|
||||
output-objects,,
|
||||
tea.n.01_1,,
|
||||
tool,,
|
||||
whisk.n.01_1,,
|
||||
container,,
|
||||
cup.n.01_1,contains,
|
||||
STEP 2,,
|
||||
input-objects,,
|
||||
low-fat_milk.n.01_1,,
|
||||
tea.n.01_1,,
|
||||
output-objects,,
|
||||
green_tea_latte.n.01_1,,
|
||||
tool,,
|
||||
whisk.n.01_1,,
|
||||
container,,
|
||||
mug.n.04_1,contains,
|
|
|
@ -1,12 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
cocoa_powder.n.01_1,
|
||||
whole_milk.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
vanilla.n.02_1,
|
||||
output-objects,
|
||||
cocoa.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepan.n.01_1,contains
|
|
|
@ -1,14 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
ice_cube.n.01_1,
|
||||
ice_cube.n.01_2,
|
||||
ice_cube.n.01_3,
|
||||
ice_cube.n.01_4,
|
||||
ice_cube.n.01_5,
|
||||
ice_cube.n.01_6,
|
||||
tool,
|
||||
deep-freeze.n.02_1,
|
||||
container,
|
||||
icetray.n.02_1,inside
|
|
|
@ -1,14 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
ice_cube.n.01_1,,
|
||||
ice_cube.n.01_2,,
|
||||
cocoa_powder.n.01_1,,
|
||||
whole_milk.n.01_1,,
|
||||
granulated_sugar.n.01_1,,
|
||||
vanilla.n.02_1,,
|
||||
output-objects,,
|
||||
iced_chocolate.n.01_1,,
|
||||
tool,,
|
||||
blender.n.01_1,,
|
||||
container,,
|
||||
water_glass.n.02_1,contains,
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
tea.n.01_1,
|
||||
tool,
|
||||
tea_bag.n.01_1,
|
||||
container,
|
||||
kettle.n.01_1,contains
|
||||
kettle.n.01_1,toggled_on
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
instant_coffee.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
drip_coffee.n.01_1,
|
||||
tool,
|
||||
tablespoon.n.02_1,
|
||||
container,
|
||||
mug.n.04_1,contains
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
brown_sugar.n.01_1,
|
||||
chili.n.02_1,
|
||||
cayenne.n.02_1,
|
||||
clove.n.03_1,
|
||||
clove.n.03_2,
|
||||
output-objects,
|
||||
jerk_seasoning.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
bowl.n.01_1,contains
|
|
|
@ -1,12 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
black_pepper.n.02_1,
|
||||
lemon_peel.n.01_1,
|
||||
salt.n.02_1,
|
||||
lemon_juice.n.01_1,
|
||||
output-objects,
|
||||
lemon-pepper_seasoning.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
blender.n.01_1,inside
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
lemon_juice.n.01_1,
|
||||
vinegar.n.01_1,
|
||||
sodium_carbonate.n.01_1,
|
||||
output-objects,
|
||||
lemon_stain_remover.n.01_1,
|
||||
tool,
|
||||
wooden_spoon.n.02_1,
|
||||
container,
|
||||
carboy.n.01_1,contains
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
granulated_sugar.n.01_1,
|
||||
lemon_juice.n.01_1,
|
||||
output-objects,
|
||||
lemonade.n.01_1,
|
||||
tool,
|
||||
wooden_spoon.n.02_1,
|
||||
container,
|
||||
pitcher.n.02_1,contains
|
|
|
@ -1,11 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
granulated_sugar.n.01_1,
|
||||
lime_juice.n.01_1,
|
||||
output-objects,
|
||||
limeade.n.01_1,
|
||||
tool,
|
||||
wooden_spoon.n.02_1,
|
||||
container,
|
||||
pitcher.n.02_1,contains
|
|
|
@ -1,35 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
cream_cheese.n.01_1,,
|
||||
butter.n.01_1,,
|
||||
whole_milk.n.01_1,,
|
||||
grated_cheese.n.01_1,,
|
||||
parmesan.n.01_1,,
|
||||
salt.n.02_1,,
|
||||
output-objects,,
|
||||
cheese_sauce.n.01_1,,
|
||||
tool,,
|
||||
stove.n.01_1,,
|
||||
container,,
|
||||
saucepan.n.01_1,inside,
|
||||
STEP 2,,
|
||||
input-objects,,
|
||||
noodle.n.01_1,,
|
||||
water.n.06_1,,
|
||||
output-objects,,
|
||||
cooked__noodle.n.01_1,,
|
||||
tool,,
|
||||
stove.n.01_1,,
|
||||
container,,
|
||||
stockpot.n.01_1,contains,
|
||||
STEP 3,,
|
||||
input-objects,,
|
||||
cooked__noodle.n.01_1,,
|
||||
breadcrumb.n.01_1,,
|
||||
cheese_sauce.n.01_1,,
|
||||
output-objects,,
|
||||
macaroni_and_cheese.n.01_1,cooked,
|
||||
tool,,
|
||||
oven.n.01_1,,
|
||||
container,,
|
||||
casserole.n.02_1,inside,
|
|
|
@ -1,22 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
vidalia_onion.n.01_1,
|
||||
output-objects,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 2,
|
||||
input-objects,
|
||||
ground_beef.n.01_1,
|
||||
whole_milk.n.01_1,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
breadcrumb.n.01_1,
|
||||
brown_sugar.n.01_1,
|
||||
output-objects,
|
||||
meat_loaf.n.01_1,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
casserole.n.02_1,inside
|
|
|
@ -1,29 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
raw_egg.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
whole_milk.n.01_1,
|
||||
cooking_oil.n.01_1,
|
||||
output-objects,
|
||||
muffin_batter.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
||||
STEP 2,
|
||||
input-objects,
|
||||
muffin_batter.n.01_1,
|
||||
output-objects,
|
||||
muffin.n.01_1,cooked
|
||||
muffin.n.01_2,cooked
|
||||
muffin.n.01_3,cooked
|
||||
muffin.n.01_4,cooked
|
||||
muffin.n.01_5,cooked
|
||||
muffin.n.01_6,cooked
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
mustard_seed.n.01_1,
|
||||
sage.n.02_1,
|
||||
cumin.n.02_1,
|
||||
clove.n.03_1,
|
||||
clove.n.03_2,
|
||||
rosemary.n.02_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
mustard_seasoning.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
bowl.n.01_1,contains
|
|
|
@ -1,14 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
salt.n.02_1,
|
||||
cinnamon.n.03_1,
|
||||
honey.n.01_1,
|
||||
oat.n.02_1,
|
||||
low-fat_milk.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
oatmeal.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepot.n.01_1,contains
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
flour.n.01_1,
|
||||
whole_milk.n.01_1,
|
||||
raw_egg.n.01_1,
|
||||
cooking_oil.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
onion_ring_batter.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,52 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
beefsteak_tomato.n.01_1,
|
||||
beefsteak_tomato.n.01_2,
|
||||
beefsteak_tomato.n.01_3,
|
||||
output-objects,
|
||||
half__beefsteak_tomato.n.01_1,
|
||||
half__beefsteak_tomato.n.01_2,
|
||||
half__beefsteak_tomato.n.01_3,
|
||||
half__beefsteak_tomato.n.01_4,
|
||||
half__beefsteak_tomato.n.01_5,
|
||||
half__beefsteak_tomato.n.01_6,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 2,
|
||||
input-objects,
|
||||
vidalia_onion.n.01_1,
|
||||
output-objects,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,contains
|
||||
STEP 3,
|
||||
input-objects,
|
||||
half__beefsteak_tomato.n.01_1,
|
||||
half__beefsteak_tomato.n.01_2,
|
||||
half__beefsteak_tomato.n.01_3,
|
||||
half__beefsteak_tomato.n.01_4,
|
||||
half__beefsteak_tomato.n.01_5,
|
||||
half__beefsteak_tomato.n.01_6,
|
||||
clove.n.03_1,
|
||||
clove.n.03_2,
|
||||
clove.n.03_3,
|
||||
clove.n.03_4,
|
||||
clove.n.03_5,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
basil.n.03_1,
|
||||
basil.n.03_2,
|
||||
basil.n.03_3,
|
||||
basil.n.03_4,
|
||||
marjoram.n.02_1,
|
||||
granulated_sugar.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
cooked__marinara.n.01_1,
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
stockpot.n.01_1,contains
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
butter.n.01_1,
|
||||
flour.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
pastry.n.01_1,
|
||||
tool,
|
||||
food_processor.n.01_1,
|
|
|
@ -1,61 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
vidalia_onion.n.01_1,not cooked
|
||||
output_objects,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,
|
||||
STEP 2,
|
||||
input-objects,
|
||||
mushroom.n.05_1,not cooked
|
||||
mushroom.n.05_2,not cooked
|
||||
mushroom.n.05_3,not cooked
|
||||
mushroom.n.05_4,not cooked
|
||||
mushroom.n.05_5,not cooked
|
||||
output-objects,
|
||||
half__mushroom.n.05_1,not cooked
|
||||
half__mushroom.n.05_2,not cooked
|
||||
half__mushroom.n.05_3,not cooked
|
||||
half__mushroom.n.05_4,not cooked
|
||||
half__mushroom.n.05_5,not cooked
|
||||
half__mushroom.n.05_6,not cooked
|
||||
half__mushroom.n.05_7,not cooked
|
||||
half__mushroom.n.05_8,not cooked
|
||||
half__mushroom.n.05_9,not cooked
|
||||
half__mushroom.n.05_10,not cooked
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 3,
|
||||
input-objects,
|
||||
pizza_dough.n.01_1,
|
||||
tomato_sauce.n.01_1,
|
||||
grated_cheese.n.01_1,
|
||||
pepperoni.n.01_1,cooked
|
||||
pepperoni.n.01_2,cooked
|
||||
pepperoni.n.01_3,cooked
|
||||
pepperoni.n.01_4,cooked
|
||||
pepperoni.n.01_5,cooked
|
||||
pepperoni.n.01_6,cooked
|
||||
pepperoni.n.01_7,cooked
|
||||
marjoram.n.02_1,
|
||||
half__mushroom.n.05_1,not cooked
|
||||
half__mushroom.n.05_2,not cooked
|
||||
half__mushroom.n.05_3,not cooked
|
||||
half__mushroom.n.05_4,not cooked
|
||||
half__mushroom.n.05_5,not cooked
|
||||
half__mushroom.n.05_6,not cooked
|
||||
half__mushroom.n.05_7,not cooked
|
||||
half__mushroom.n.05_8,not cooked
|
||||
half__mushroom.n.05_9,not cooked
|
||||
half__mushroom.n.05_10,not cooked
|
||||
diced__vidalia_onion.n.01_1,
|
||||
output-objects,
|
||||
pizza.n.01_1,
|
||||
tool,
|
||||
oven.n.01_1,
|
||||
container,
|
||||
cookie_sheet.n.01_1,ontop
|
|
|
@ -1,14 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
water.n.06_1,
|
||||
yeast.n.01_1,
|
||||
granulated_sugar.n.01_1,
|
||||
flour.n.01_1,
|
||||
olive_oil.n.01_1,
|
||||
salt.n.02_1,
|
||||
output-objects,
|
||||
pizza_dough.n.01_1,not cooked
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
|
|
@ -1,15 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
beefsteak_tomato.n.01_1,
|
||||
tomato_paste.n.01_1,
|
||||
marjoram.n.02_1,
|
||||
clove.n.03_1,
|
||||
clove.n.03_2,
|
||||
salt.n.02_1,
|
||||
basil.n.03_1,
|
||||
output-objects,
|
||||
tomato_sauce.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
stockpot.n.01_1,contains
|
|
|
@ -1,31 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
raspberry.n.02_1,
|
||||
raspberry.n.02_2,
|
||||
raspberry.n.02_3,
|
||||
raspberry.n.02_4,
|
||||
raspberry.n.02_5,
|
||||
raspberry.n.02_6,
|
||||
strawberry.n.01_1,
|
||||
strawberry.n.01_2,
|
||||
strawberry.n.01_3,
|
||||
strawberry.n.01_4,
|
||||
lemon_juice.n.01_1,
|
||||
yogurt.n.01_1,
|
||||
honey.n.01_1,
|
||||
output-objects,
|
||||
smoothie.n.02_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
STEP 2,
|
||||
input-objects,
|
||||
smoothie.n.02_1,
|
||||
output-objects,
|
||||
ice_lolly.n.01_1,frozen
|
||||
ice_lolly.n.01_2,frozen
|
||||
ice_lolly.n.01_3,frozen
|
||||
ice_lolly.n.01_4,frozen
|
||||
tool,
|
||||
deep-freeze.n.02_1,
|
||||
container,
|
||||
mold.n.02_1,inside
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
rosemary.n.02_1,
|
||||
sage.n.02_1,
|
||||
thyme.n.02_1,
|
||||
black_pepper.n.02_1,
|
||||
nutmeg.n.02_1,
|
||||
output-objects,
|
||||
poultry_seasoning.n.01_1,
|
||||
tool,
|
||||
tablespoon.n.02_1,
|
||||
container,
|
||||
bowl.n.01_1,inside
|
|
|
@ -1,13 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
cinnamon.n.03_1,
|
||||
ginger.n.02_1,
|
||||
nutmeg.n.02_1,
|
||||
allspice.n.03_1,
|
||||
clove.n.04_1,
|
||||
output-objects,
|
||||
pumpkin_pie_spice.n.01_1,
|
||||
tool,
|
||||
whisk.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,contains
|
|
|
@ -1,63 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
STEP 1,
|
||||
input-objects,
|
||||
bell_pepper.n.02_1,
|
||||
output-objects,
|
||||
diced__bell_pepper.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 2,
|
||||
input-objects,
|
||||
clove.n.03_1,
|
||||
clove.n.03_2,
|
||||
clove.n.03_3,clove.n.03
|
||||
clove.n.03_4,
|
||||
clove.n.03_5,
|
||||
output-objects,
|
||||
diced__clove.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 3,
|
||||
input-objects,
|
||||
beefsteak_tomato.n.01_1,
|
||||
output-objects,
|
||||
diced__beefsteak_tomato.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 4,
|
||||
input-objects,
|
||||
diced__bell_pepper.n.01_1,
|
||||
diced__clove.n.01_1,
|
||||
olive_oil.n.01_1,
|
||||
diced__beefsteak_tomato.n.01_1,
|
||||
tomato_sauce.n.01_1,
|
||||
chicken_broth.n.01_1,
|
||||
clam.n.03_1,not cooked
|
||||
clam.n.03_2,not cooked
|
||||
clam.n.03_3,not cooked
|
||||
clam.n.03_4,not cooked
|
||||
clam.n.03_5,not cooked
|
||||
clam.n.03_6,not cooked
|
||||
prawn.n.01_1,not cooked
|
||||
prawn.n.01_2,not cooked
|
||||
prawn.n.01_3,not cooked
|
||||
prawn.n.01_4,not cooked
|
||||
prawn.n.01_5,not cooked
|
||||
scallop.n.02_1,not cooked
|
||||
scallop.n.02_2,not cooked
|
||||
scallop.n.02_3,not cooked
|
||||
scallop.n.02_4,not cooked
|
||||
marjoram.n.02_1,
|
||||
parsley.n.02_1,
|
||||
output-objects,
|
||||
fish_stew.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
stockpot.n.01_1,contains
|
|
|
@ -1,32 +0,0 @@
|
|||
STEP 1,Unnamed: 1,Unnamed: 2
|
||||
input-objects,,
|
||||
carrot.n.03_1,,
|
||||
output-objects,,
|
||||
diced__carrot.n.01_1,,
|
||||
tool,,
|
||||
carving_knife.n.01_1,,
|
||||
container,,
|
||||
chopping_board.n.01_1,,
|
||||
STEP 2,,
|
||||
input-objects,,
|
||||
celery.n.02_1,,
|
||||
output-objects,,
|
||||
diced__celery.n.01_1,,
|
||||
tool,,
|
||||
carving_knife.n.01_1,,
|
||||
container,,
|
||||
chopping_board.n.01_1,,
|
||||
STEP 3,,
|
||||
input-objects,,
|
||||
chicken_broth.n.01_1,,
|
||||
diced__carrot.n.01_1,,
|
||||
diced__celery.n.01_1,,
|
||||
chicken.n.01_1,not cooked,
|
||||
salt.n.02_1,,
|
||||
rosemary.n.02_1,,
|
||||
output-objects,,
|
||||
cooked__chicken_soup.n.01_1,,
|
||||
tool,,
|
||||
stove.n.01_1,,
|
||||
container,,
|
||||
stockpot.n.01_1,contains,
|
|
|
@ -1,34 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
carrot.n.03_1,
|
||||
carrot.n.03_2,
|
||||
carrot.n.03_3,
|
||||
output-objects,
|
||||
diced__carrot.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 2,
|
||||
input-objects,
|
||||
vidalia_onion.n.01_1,
|
||||
vidalia_onion.n.01_2,
|
||||
output-objects,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 3,
|
||||
input-objects,
|
||||
diced__carrot.n.01_1,
|
||||
pea.n.01_1,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
ground_beef.n.01_1,
|
||||
beef_broth.n.01_1,
|
||||
output-objects,
|
||||
beef_stew.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
stockpot.n.01_1,contains
|
|
|
@ -1,31 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
beefsteak_tomato.n.01_1,
|
||||
output-objects,
|
||||
diced__beefsteak_tomato.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 2,
|
||||
input-objects,
|
||||
vidalia_onion.n.01_1,
|
||||
output-objects,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 3,
|
||||
input-objects,
|
||||
white_rice.n.01_1,
|
||||
diced__beefsteak_tomato.n.01_1,
|
||||
diced__vidalia_onion.n.01_1,
|
||||
olive_oil.n.01_1,
|
||||
chicken_broth.n.01_1,
|
||||
output-objects,
|
||||
tomato_rice.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
crock_pot.n.01_1,contains
|
|
|
@ -1,38 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
butter.n.01_1,
|
||||
output-objects,
|
||||
melted__butter.n.01_1,
|
||||
tool,
|
||||
microwave.n.02_1,
|
||||
container,
|
||||
bowl.n.01_1,contains
|
||||
STEP 2,
|
||||
input-objects,
|
||||
raw_egg.n.01_1,
|
||||
raw_egg.n.01_2,
|
||||
melted__butter.n.01_1,
|
||||
vanilla.n.02_1,
|
||||
flour.n.01_1,
|
||||
baking_powder.n.01_1,
|
||||
salt.n.02_1,
|
||||
granulated_sugar.n.01_1,
|
||||
whole_milk.n.01_1,
|
||||
output-objects,
|
||||
waffle_batter.n.01_1,
|
||||
tool,
|
||||
electric_mixer.n.01_1,
|
||||
container,
|
||||
mixing_bowl.n.01_1,inside
|
||||
STEP 3,
|
||||
input-objects,
|
||||
waffle_batter.n.01_1,
|
||||
output-objects,
|
||||
waffle.n.01_1,cooked
|
||||
waffle.n.01_2,cooked
|
||||
waffle.n.01_3,cooked
|
||||
waffle.n.01_4,cooked
|
||||
tool,
|
||||
waffle_iron.n.01_1,toggled_on
|
||||
container,
|
||||
plate.n.04_1,ontop
|
|
|
@ -1,12 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
bourbon.n.02_1,
|
||||
honey.n.01_1,
|
||||
lemon_juice.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
hot_toddy.n.01_1,
|
||||
tool,
|
||||
tablespoon.n.02_1,
|
||||
container,
|
||||
mug.n.04_1,contains
|
|
|
@ -1,21 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
watermelon.n.02_1,
|
||||
output-objects,
|
||||
diced__watermelon.n.02_1,
|
||||
tool,
|
||||
carving_knife.n.01_1,
|
||||
container,
|
||||
chopping_board.n.01_1,ontop
|
||||
STEP 2,
|
||||
input-objects,
|
||||
diced__watermelon.n.01_1,
|
||||
lemonade.n.01_1,
|
||||
lemon_juice.n.01_1,
|
||||
tonic.n.01_1,
|
||||
output-objects,
|
||||
fruit_punch.n.01_1,
|
||||
tool,
|
||||
blender.n.01_1,
|
||||
container,
|
||||
pitcher.n.02_1,contains
|
|
|
@ -1,12 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
heavy_cream.n.01_1,
|
||||
white_wine.n.01_1,
|
||||
flour.n.01_1,
|
||||
parsley.n.02_1,
|
||||
output-objects,
|
||||
wine_sauce.n.01_1,
|
||||
tool,
|
||||
stove.n.01_1,
|
||||
container,
|
||||
saucepan.n.01_1,contains
|
|
|
@ -1,10 +0,0 @@
|
|||
STEP 1,Unnamed: 1
|
||||
input-objects,
|
||||
coffee_bean.n.01_1,
|
||||
water.n.06_1,
|
||||
output-objects,
|
||||
drip_coffee.n.01_1,
|
||||
tool,
|
||||
coffee_maker.n.01_1,
|
||||
container,
|
||||
mug.n.04_1,contains
|
|
Loading…
Reference in New Issue