include(joinpath(dirname(Base.active_project()), "scripts", "ensure_packages.jl"))
@auto_using CausalDynamics Graphs
schema = RelationalSchema(
[:signal, :car, :pedestrian],
Dict(:controls => (:signal, :car), :path => (:pedestrian, :car)),
Dict(:signal => [:walk], :car => [:brake], :pedestrian => [:cross]),
)
skeleton = RelationalSkeleton(
schema,
Dict(:signal => [:s1], :car => [:c1, :c2], :pedestrian => [:p1]),
Dict(:controls => [(:s1, :c1)], :path => [(:p1, :c1)]),
)
grounded = ground_relational_graph(skeleton, [
RelationalParent(:signal, :walk, :car, :brake, :controls),
RelationalParent(:pedestrian, :cross, :car, :brake, :path),
])
println("Grounded variables: ", grounded.node_labels)
println("Grounded edges: ", collect(edges(grounded.graph)))