#lang typed/racket (require "utils.rkt" typed/graph) (provide dds%) (define dds% (class object% #:forall (State Modality) (super-new) (: step (-> State (Listof State))) (define/abstract/error (step st)) (: step/annotated (-> State (Listof (Pairof Modality State)))) (define/abstract/error (step/annotated st)) (: step* (-> (Listof State) (Listof State))) (define/abstract/error (step* sts)) (: build-state-graph (-> (Listof State) Graph)) (define/abstract/error (build-state-graph sts)) (: build-state-graph/annotated (-> (Listof State) Graph)) (define/abstract/error (build-state-graph/annotated sts)) (: build-state-graph* (-> (Listof State) Integer Graph)) (define/abstract/error (build-state-graph* sts nsteps)) (: build-state-graph*/annotated (-> (Listof State) Integer Graph)) (define/abstract/error (build-state-graph*/annotated nsteps sts)) ))