Vithanco

VGL Guide — Prerequisite Tree (PRT)

Estimated reading time: 2 minutes.

Prerequisite Tree (PRT)

Planning with necessary-condition thinking, starting from the objective and working back to obstacles.

Node types

  • Objective — the desired goal
  • Obstacle — a barrier preventing achievement
  • IntermediateObjective — a milestone overcoming a specific obstacle
  • OR — allows optional conditions instead of requiring all predecessors (icon: OR circle)

Edge types — flowing bottom-to-top, intermediate objectives at the bottom.

  • obstacle_blocks_objective — Obstacle → Objective
  • obstacle_blocks_intermediate_objective — Obstacle → IntermediateObjective
  • intermediate_objective_overcomes_obstacle — IntermediateObjective → Obstacle
  • intermediate_objective_to_objective — the direct path
  • To the OR junctor: obstacle_to_or, intermediate_objective_to_or
  • From it: or_to_objective, or_to_intermediate_objective, or_to_obstacle

A planning graph showing obstacles blocking objectives and intermediate objectives to overcome them:

vgraph projectLaunch: PRT "New Product Launch Planning" {
    // The main objective we want to achieve
    node obj1: Objective "Successfully launch product by Q3";

    // Obstacles blocking the main objective
    node obs1: Obstacle "Development team lacks required skills";
    node obs2: Obstacle "Marketing budget not approved";
    node obs3: Obstacle "No distribution channel established";

    // Intermediate objectives to overcome obstacles
    node io1: IntermediateObjective "Train team on new technology";
    node io2: IntermediateObjective "Hire experienced developers";
    node io3: IntermediateObjective "Present ROI analysis to leadership";
    node io4: IntermediateObjective "Partner with existing retailer";
    node io5: IntermediateObjective "Build direct-to-consumer channel";

    // OR junctor for alternative paths
    node or1: OR;
    node or2: OR;

    // Further obstacles blocking intermediate objectives
    node obs4: Obstacle "Training budget limited";
    node obs5: Obstacle "Talent pool is competitive";

    // Obstacles block the main objective
    edge obs1 -> obj1: obstacle_blocks_objective;
    edge obs2 -> obj1: obstacle_blocks_objective;
    edge obs3 -> obj1: obstacle_blocks_objective;

    // Alternative ways to overcome skill obstacle (via OR)
    edge io1 -> or1: intermediate_objective_to_or;
    edge io2 -> or1: intermediate_objective_to_or;
    edge or1 -> obs1: or_to_obstacle;

    // ROI analysis overcomes budget obstacle
    edge io3 -> obs2: intermediate_objective_overcomes_obstacle;

    // Alternative distribution solutions
    edge io4 -> or2: intermediate_objective_to_or;
    edge io5 -> or2: intermediate_objective_to_or;
    edge or2 -> obs3: or_to_obstacle;

    // Recursive obstacles blocking intermediate objectives
    edge obs4 -> io1: obstacle_blocks_intermediate_objective;
    edge obs5 -> io2: obstacle_blocks_intermediate_objective;
}