Changeset 24779 in project


Ignore:
Timestamp:
08/22/11 11:03:22 (10 years ago)
Author:
Ivan Raikov
Message:

interval-digraph: restructuring internals and eliminating predecessor map

Location:
release/4/interval-digraph/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/interval-digraph/trunk/interval-digraph.scm

    r24776 r24779  
    7373
    7474(define-record-type interval-digraph
    75   (make-interval-digraph name label nodes succs preds node-props edge-props )
     75  (make-interval-digraph name label nodes succs node-props edge-props )
    7676  interval-digraph?
    7777  (name        graph-name)
     
    7979  (nodes       graph-nodes)
    8080  (succs       graph-succs)
    81   (preds       graph-preds)
    8281  (node-props  graph-node-props)
    8382  (edge-props  graph-edge-props)
     
    8685(define (empty-graph name label)
    8786  (make-interval-digraph name label cis:empty
    88                          (make-persistent-map fx-) (make-persistent-map fx-)
     87                         (make-persistent-map fx-)
    8988                         `((label . ,(make-prop-tree))) `((label . ,(make-prop-tree)))
    9089                         ))
     
    9695  (define nodes       (graph-nodes graph-instance))
    9796  (define succs       (graph-succs graph-instance))
    98   (define preds       (graph-preds graph-instance))
    9997  (define node-props  (graph-node-props graph-instance))
    10098  (define edge-props  (graph-edge-props graph-instance))
     
    141139     name label
    142140     (cis:add i nodes)
    143      succs preds
     141     succs
    144142     (if label
    145143         (let ((node-labels (alist-ref 'label node-props)))
     
    153151     name label
    154152     (cis:union i nodes)
    155      succs preds
     153     succs
    156154     (if label
    157155         (let ((node-labels (alist-ref 'label node-props)))
     
    160158     edge-props
    161159     ))
    162 
    163   (define (remove-node i)
    164    
    165     (let ((remove-neighbor
    166            (lambda (j ax)
    167              (let ((node-set ((ax 'get-value) j cis:empty)))
    168                ((ax 'put) j (cis:remove i node-set))
    169                ))))
    170 
    171       (and (cis:in? i nodes)
    172            (let ((i-succ ((succs 'get-value) i cis:empty))
    173                  (i-pred ((preds 'get-value) i cis:empty)))
    174              
    175              (let ((succs1 (cis:fold-left remove-neighbor ((succs 'delete) i (lambda _ succs)) i-pred))
    176                    (preds1 (cis:fold-left remove-neighbor ((preds 'delete) i (lambda _ preds)) i-succ)))
    177                
    178                (make-interval-digraph name label
    179                 (cis:remove i nodes)
    180                 succs1 preds1
    181                 (let ((node-labels (alist-ref 'label node-props)))
    182                   (alist-update 'label ((node-labels 'delete) (cis:singleton i) #f) node-props))
    183                 (let ((edge-labels (alist-ref 'label edge-props)))
    184                   (alist-update 'label ((edge-labels 'delete) (cis:singleton i) #f) edge-props))
    185                 ))))
    186       ))
    187 
    188            
    189 
    190160           
    191161
     
    197167             (and (cis:in? i nodes) (cis:in? j nodes)
    198168
    199                     (let* ((oi ((succs 'get-value) i cis:empty))
    200                            (oj ((preds 'get-value) j cis:empty)))
     169                    (let ((oi ((succs 'get-value) i cis:empty)))
    201170                     
    202                       (let ((succs1 ((succs 'put) i (cis:add j oi)))
    203                             (preds1 ((preds 'put) j (cis:add i oj))))
     171                      (let ((succs1 ((succs 'put) i (cis:add j oi))))
    204172                       
    205173                        (make-interval-digraph
    206174                         name label
    207175                         nodes
    208                          succs1 preds1
     176                         succs1
    209177                         node-props
    210178                         (if label
     
    219187          (else (interval-digraph:error 'add-edge ": invalid edge " e))))
    220188
     189
     190  (define (add-edge-interval e )
     191    (cond ((and (pair? e) (pair? (cdr e)))
     192
     193           (let ((i (car e)) (js (cadr e)))
     194
     195             (and (cis:in? i nodes) (cis:subset? js nodes)
     196
     197                    (let* ((oi ((succs 'get-value) i cis:empty)))
     198                     
     199                      (let ((succs1 ((succs 'put) i (cis:union js oi))))
     200                       
     201                        (make-interval-digraph
     202                         name label
     203                         nodes
     204                         succs1
     205                         node-props
     206                         edge-props
     207                         ))))
     208             ))
     209          (else (interval-digraph:error 'add-edge-interval ": invalid edge interval " e))))
     210
    221211 
    222212
     
    224214
    225215  (define (get-succ-interval i)  (and (cis:in? i nodes) ((succs 'get-value) i cis:empty)))
    226 
    227 
    228   (define (get-pred i)           (and (cis:in? i nodes) (cis:elements ((preds 'get-value) i cis:empty))))
    229 
    230   (define (get-pred-interval i)  (and (cis:in? i nodes) ((preds 'get-value) i cis:empty)))
    231 
    232216
    233217  (define (out-edges i)          (and (cis:in? i nodes)
     
    235219                                        (cis:fold-left (lambda (j ax) (cons (list i j) ax)) '()
    236220                                                       succ-set))))
    237 
    238 
    239   (define (in-edges j)           (and (cis:in? j nodes)
    240                                       (let ((pred-set ((preds 'get-value) j cis:empty)))
    241                                         (cis:fold-left (lambda (i ax) (cons (list i j) ax)) '() pred-set))))
    242 
    243221
    244222  (define (has-edge i j)         (and (cis:in? i nodes)
     
    252230
    253231
    254   (define (edge-property-keys)   (map car edge-props))
     232  (define (edge-property-list-keys)   (map car edge-props))
     233
     234  (define (edge-property-list-map i)  (and (cis:in? i nodes)
     235                                           (map
     236                                            (lambda (p)
     237                                              (let ((prop-key (car p))
     238                                                    (prop-map (cdr p)))
     239                                                (let ((i-prop ((prop-map 'get-value) (cis:singleton i) #f)))
     240                                                  (cons prop-key i-prop))))
     241                                            edge-props)))
    255242
    256243  (define (edge-property p i j)  (and (cis:in? i nodes) (cis:in? j nodes) 
    257244                                      (let* ((prop (alist-ref p edge-props))
    258245                                             (i-prop (and prop ((prop 'get-value) (cis:singleton i) #f))))
    259                                         (and i-prop ((i-prop 'get-value) (cis:singleton j) #f)))))
     246                                         (and i-prop ((i-prop 'get-value) (cis:singleton j) #f)))))
    260247   
    261248
    262249  (define (edge-property-set p i j v)   (and (has-edge i j)
    263250                                             (make-interval-digraph name label
    264                                                                     nodes succs preds
     251                                                                    nodes succs
    265252                                                                    node-props
    266253                                                                    (let* ((prop    (or (alist-ref p edge-props) (make-prop-tree)))
     
    280267                                                      (and (cis:subset? i nodes) (cis:subset? j nodes)
    281268                                                           (make-interval-digraph name label
    282                                                                                   nodes succs preds
     269                                                                                  nodes succs
    283270                                                                                  node-props
    284271                                                                                  (let* ((prop    (or (alist-ref p edge-props) (make-prop-tree)))
     
    286273                                                                                         (i-prop1 ((i-prop 'put) j v))
    287274                                                                                         (prop1   ((prop 'put) i i-prop1)))
     275                                                                                   
    288276                                                                                    (alist-update p prop1 edge-props))
    289277                                                                                  ))))
     
    301289                                                      (and (cis:subset? i nodes) (cis:subset? j nodes)
    302290                                                           (make-interval-digraph name label
    303                                                                                   nodes succs preds
     291                                                                                  nodes succs
    304292                                                                                  node-props
    305293                                                                                  (let* ((prop    (or (alist-ref p edge-props) (make-prop-tree)))
     
    311299                                                      ))
    312300
    313   (define (node-property-keys)    (map car node-props))
     301  (define (node-property-list-keys)    (map car node-props))
    314302
    315303  (define (node-property p i)    (and (cis:in? i nodes)
     
    320308  (define (node-property-set p i v)    (and (cis:in?  i nodes)
    321309                                            (make-interval-digraph name label
    322                                                                    nodes succs preds
     310                                                                   nodes succs
    323311                                                                   (let* ((prop (or (alist-ref p node-props) (make-prop-tree)))
    324312                                                                          (prop1 ((prop 'put) (cis:singleton i) v)))
     
    337325                                                         (make-interval-digraph name label
    338326                                                                                nodes
    339                                                                                 succs preds
     327                                                                                succs
    340328                                                                                (let* ((prop  (or (alist-ref p node-props) (make-prop-tree)))
    341329                                                                                       (prop1 ((prop 'put) i v)))
     
    347335
    348336  (define (node-label-set i v)   (node-property-set 'label i v))
    349 
    350   (define (roots)                (cis:fold-left (lambda (i ax) (if (cis:empty? ((preds 'get-value) i cis:empty)) (cons i ax) ax))
    351                                                 nodes))
    352 
    353337
    354338  (define (foreach-node f)   (cis:foreach (lambda (i) (f i)) nodes))
     
    379363        ((capacity)                    capacity)
    380364        ((out-edges)                   out-edges)
    381         ((in-edges)                    in-edges)
    382365        ((succ)                        get-succ)
    383         ((pred)                        get-pred)
    384366        ((succ-interval)               get-succ-interval)
    385         ((pred-interval)               get-pred-interval)
    386367        ((has-edge)                    has-edge)
    387368        ((has-node)                    has-node)
    388369        ((has-node-interval)           has-node-interval)
    389         ((node-property-keys)          node-property-keys)
     370        ((node-property-list-keys)          node-property-list-keys)
    390371        ((node-property)               node-property)
    391372        ((node-label)                  node-label)
    392373        ((node-interval-property)      node-interval-property)
    393         ((edge-property-keys)          edge-property-keys)
     374        ((edge-property-list-keys)         edge-property-list-keys)
     375        ((edge-property-list-map)          edge-property-list-map)
    394376        ((edge-property)               edge-property)
    395377        ((edge-interval-property)      edge-interval-property)
    396378        ((edge-interval-prototype)     edge-interval-prototype)
    397         ((roots)                       roots)
    398379        ((foreach-node)                foreach-node)
    399380        ((foreach-node-with-label)     foreach-node-with-label)
     
    403384        ((add-node)                    (compose interval-digraph-operations add-node))
    404385        ((add-node-interval)           (compose interval-digraph-operations add-node-interval))
    405         ((remove-node)                 (compose interval-digraph-operations remove-node))
    406386        ((add-edge)                    (compose interval-digraph-operations add-edge))
     387        ((add-edge-interval)           (compose interval-digraph-operations add-edge-interval))
    407388        ((node-label-set)              (compose interval-digraph-operations node-label-set))
    408389        ((node-property-set)           (compose interval-digraph-operations node-property-set))
     
    480461           (capacity               order)
    481462           (out-edges                (lambda (i)   (merge-edges ((a 'out-edges) i) ((b 'out-edges) i))))
    482            (in-edges                 (lambda (i)   (merge-edges ((a 'in-edges) i) ((b 'in-edges) i))))
    483463           (succ                     (lambda (i)   (cis:elements (cis:union ((a 'succ-interval) i)  ((b 'succ-interval) i)))))
    484            (pred                     (lambda (i)   (cis:elements (cis:union ((a 'pred-interval) i)  ((b 'pred-interval) i)))))
    485464           (succ-interval            (lambda (i)   (cis:union ((a 'succ-interval) i)  ((b 'succ-interval) i))))
    486            (pred-interval            (lambda (i)   (cis:union ((a 'pred-interval) i)  ((b 'pred-interval) i))))
    487465           (has-edge                 (lambda (i j) (or ((a 'has-edge) i j) ((b 'has-edge) i j))))
    488466           (has-node                 (lambda (i)   (or ((a 'has-node) i) ((b 'has-node) i))))
    489467           (has-node-interval        (lambda (i)   (or ((a 'has-node-interval) i) ((b 'has-node-interval) i))))
    490            (node-property-keys       (lambda ()   (delete-duplicates (append ((a 'node-property-keys)) ((b 'node-property-keys))))))
     468           (node-property-list-keys       (lambda ()   (delete-duplicates (append ((a 'node-property-list-keys)) ((b 'node-property-list-keys))))))
    491469           (node-property            (lambda (p i)  (or ((a 'node-property) p i) ((b 'node-property) p i))))
    492470           (node-interval-property   (lambda (p i)  (or ((a 'node-interval-property) p i) ((b 'node-interval-property) p i))))
    493471           (node-label               (lambda (i)    (or ((a 'node-label) i) ((b 'node-label) i))))
    494            (edge-property-keys       (lambda () (delete-duplicates (append ((a 'edge-property-keys)) ((b 'edge-property-keys))))))
     472           (edge-property-list-keys       (lambda () (delete-duplicates (append ((a 'edge-property-list-keys)) ((b 'edge-property-list-keys))))))
    495473           (edge-property            (lambda (p i j)  (or ((a 'edge-property) p i j) ((b 'edge-property) i j))))
    496474           (edge-interval-property   (lambda (p i j)  (or ((a 'edge-interval-property) p i j) ((b 'edge-interval-property) i j))))
    497            (roots                    (lambda () (merge-nodes ((a 'roots)) ((b 'roots)))))
    498475           (foreach-node             (lambda (f) (for-each f (nodes))))
    499476           (foreach-node-with-label  (lambda (f) (for-each f (nodes-with-labels))))
     
    507484            (lambda (i #!key (label #f))
    508485              (recur ((a 'add-node-interval) i label: label) ((b 'add-node-interval) i label: label))))
    509            (add-edge 
    510             (lambda (e #!key (label #f))
    511               (recur ((a 'add-edge) e label: label) ((b 'add-edge) e label: label))))
    512            (remove-node
    513             (lambda (i) (recur ((a 'remove-node) i) ((b 'remove-node) i))))
     486           (add-edge-interval 
     487            (lambda (e)
     488              (recur ((a 'add-edge-interval) e) ((b 'add-edge-interval) e))))
    514489                         
    515490           (edge-interval-property-set     
     
    560535        ((capacity)                    capacity)
    561536        ((out-edges)                   out-edges)
    562         ((in-edges)                    in-edges)
    563537        ((succ)                        succ)
    564         ((pred)                        pred)
    565538        ((succ-interval)               succ-interval)
    566         ((pred-interval)               pred-interval)
    567539        ((has-edge)                    has-edge)
    568540        ((has-node)                    has-node)
    569541        ((has-node-interval)           has-node-interval)
    570         ((node-property-keys)          node-property-keys)
     542        ((node-property-list-keys)          node-property-list-keys)
    571543        ((node-property)               node-property)
    572544        ((node-interval-property)      node-interval-property)
    573545        ((node-label)                  node-label)
    574546        ((edge-property)               edge-property)
    575         ((edge-property-keys)          edge-property-keys)
    576         ((roots)                       roots)
     547        ((edge-property-list-keys)          edge-property-list-keys)
    577548        ((foreach-node)                foreach-node)
    578549        ((foreach-node-with-label)     foreach-node-with-label)
     
    582553        ((add-node)                    add-node)
    583554        ((add-node-interval)           add-node-interval)
    584         ((remove-node)                 remove-node)
    585         ((add-edge)                    add-edge)
     555        ((add-edge-interval)           add-edge-interval)
    586556        ((node-label-set)              node-label-set)
    587557        ((node-property-set)           node-property-set)
     
    621591           (capacity                 order)
    622592           (out-edges                (lambda (i)      (rename-edges ((a 'out-edges) (fx- i k)))))
    623            (in-edges                 (lambda (i)      (rename-edges ((a 'in-edges) (fx- i k)))))
    624593           (succ                     (lambda (i)      (cis:elements (cis:shift k ((a 'succ-interval) (fx- i k) )))))
    625            (pred                     (lambda (i)      (cis:elements (cis:shift k ((a 'pred-interval) (fx- i k) )))))
    626594           (succ-interval            (lambda (i)      (cis:shift k ((a 'succ-interval) (fx- i k) ))))
    627            (pred-interval            (lambda (i)      (cis:shift k ((a 'pred-interval) (fx- i k) ))))
    628595           (has-edge                 (lambda (i j)    ((a 'has-edge) (fx- i k) (fx- j k))))
    629596           (has-node                 (lambda (i)      ((a 'has-node) (fx- i k))))
    630597           (has-node-interval        (lambda (i)      ((a 'has-node-interval) (cis:shift (fxneg k) i))))
    631            (node-property-keys       (a 'node-property-keys))
     598           (node-property-list-keys       (a 'node-property-list-keys))
    632599           (node-property            (lambda (p i)    ((a 'node-property) p (fx- i k) )))
    633600           (node-interval-property   (lambda (p i)    ((a 'node-interval-property) p (cis:shift (fxneg k) i) )))
    634601           (node-label               (lambda (i)      ((a 'node-label) (fx- i k))))
    635            (edge-property-keys       (a 'edge-property-keys))
     602           (edge-property-list-keys       (a 'edge-property-list-keys))
    636603           (edge-property            (lambda (p i j)  ((a 'edge-property) p (fx- i k) (fx- j k) )))
    637604           (edge-interval-property   (lambda (p i j)  ((a 'edge-interval-property) p (cis:shift (fxneg k) i) (cis:shift (fxneg k) j) )))
    638            (roots                    (lambda ()       (compose rename-nodes (a 'roots))))
    639605           (foreach-node             (lambda (f)      (for-each (lambda (i) (f (fx+ i k))) (nodes))))
    640606           (foreach-node-with-label  (lambda (f)      (for-each (lambda (x) (f (fx+ (car x) k) (cadr x))) (nodes-with-labels))))
     
    647613
    648614           (add-edge    (lambda (e #!key (label #f))  (recur ((a 'add-edge) (list (fx- (car e) k) (fx- (cadr e) k)) label: label) )))
    649 
    650            (remove-node (lambda (i) (recur ((a 'remove-node) (fx- i k)) )))
     615           (add-edge-interval (lambda (e)  (recur ((a 'add-edge-interval) (list (fx- (car e) k) (fx- (cadr e) k)) ))))
    651616
    652617           (edge-interval-property-set     
     
    683648        ((capacity)                    capacity)
    684649        ((out-edges)                   out-edges)
    685         ((in-edges)                    in-edges)
    686650        ((succ)                        succ)
    687         ((pred)                        pred)
    688651        ((succ-interval)               succ-interval)
    689         ((pred-interval)               pred-interval)
    690652        ((has-edge)                    has-edge)
    691653        ((has-node)                    has-node)
    692654        ((has-node-interval)           has-node-interval)
    693         ((node-property-keys)          node-property-keys)
     655        ((node-property-list-keys)          node-property-list-keys)
    694656        ((node-property)               node-property)
    695657        ((node-interval-property)      node-interval-property)
    696658        ((node-label)                  node-label)
    697         ((edge-property-keys)          edge-property-keys)
     659        ((edge-property-list-keys)          edge-property-list-keys)
    698660        ((edge-property)               edge-property)
    699         ((roots)                       roots)
    700661        ((foreach-node)                foreach-node)
    701662        ((foreach-node-with-label)     foreach-node-with-label)
     
    705666        ((add-node)                    add-node)
    706667        ((add-node-interval)           add-node-interval)
    707         ((remove-node)                 remove-node)
    708668        ((add-edge)                    add-edge)
     669        ((add-edge-interval)           add-edge-interval)
    709670        ((node-label-set)              node-label-set)
    710671        ((node-property-set)           node-property-set)
  • release/4/interval-digraph/trunk/interval-digraph.setup

    r24776 r24779  
    1818
    1919  ; Assoc list with properties for your extension:
    20   `((version 1.4)
     20  `((version 2.0)
    2121    ))
  • release/4/interval-digraph/trunk/tests/run.scm

    r24683 r24779  
    2222;;
    2323
    24 (require-library srfi-1 test interval-digraph random-mtzig)
     24(require-library srfi-1 test interval-digraph cis random-mtzig)
    2525(import srfi-1 test
     26        (prefix cis   cis:)
    2627        (prefix interval-digraph   interval-digraph:)
    2728        (only random-mtzig random-mtzig:init random-mtzig:randb!)
     
    5152(define node-map  (zip node-list node-ids))
    5253
    53 (test-group "interval digraph test"
     54(test-group "basic digraph test"
    5455  (let* ((g (interval-digraph:make-digraph  'depgraph  "dependency graph"))
    5556         
     
    9192            ((g1 'edges-with-labels)))
    9293
    93       (let ((g2 ;; remove node 0 from graph
    94              ((g1 'remove-node) 0)))
    95        
    96         ;; make sure node 0 got removed
    97         (test "remove node 0"
    98               '((14 killerapp) (13 libzigzag_a) (12 zag_o)
    99                 (11 zag_cpp) (10 zig_o) (9 zig_cpp) (8 libfoobar_a)
    100                 (7 bar_o) (6 bar_cpp) (5 foo_o) (4 foo_cpp) (3 zow_h)
    101                 (2 boz_h) (1 yow_h))
    102               ((g2 'nodes-with-labels)))
    103        
    104         ;; remove node 2 from graph
    105         (let ((g2 ((g2 'remove-node) 2)))
    106          
    107          
    108           ;; make sure node 2 got removed
    109           (test "remove node 2"
    110                 '((14 killerapp) (13 libzigzag_a) (12 zag_o)
    111                   (11 zag_cpp) (10 zig_o) (9 zig_cpp) (8 libfoobar_a)
    112                   (7 bar_o) (6 bar_cpp) (5 foo_o) (4 foo_cpp) (3 zow_h) (1 yow_h))
    113                 ((g2 'nodes-with-labels)))
    114          
    115           ;; make sure the edges of node 2 got removed
    116           (test "make sure node 2 edges got removed"
    117                 (map (lambda (x) (take x 2))
    118                      '((13 14 "libzigzag_a->killerapp") (12 13 "zag_o->libzigzag_a")
    119                        (11 12 "zag_cpp->zag_o") (10 13 "zig_o->libzigzag_a")
    120                        (9 10 "zig_cpp->zig_o") (8 13 "libfoobar_a->libzigzag_a")
    121                        (7 8 "bar_o->libfoobar_a") (6 7 "bar_cpp->bar_o")
    122                        (5 8 "foo_o->libfoobar_a") (4 5 "foo_cpp->foo_o")
    123                        (3 4 "zow_h->foo_cpp") (1 6 "yow_h->bar_cpp")
    124                        (1 11 "yow_h->zag_cpp")
    125                        ))
    126                 ((g2 'edges)))
     94          )))
    12795
    128           (test "make sure node 2 edges got removed (with labels)"
    129                      '((13 14 "libzigzag_a->killerapp") (12 13 "zag_o->libzigzag_a")
    130                        (11 12 "zag_cpp->zag_o") (10 13 "zig_o->libzigzag_a")
    131                        (9 10 "zig_cpp->zig_o") (8 13 "libfoobar_a->libzigzag_a")
    132                        (7 8 "bar_o->libfoobar_a") (6 7 "bar_cpp->bar_o")
    133                        (5 8 "foo_o->libfoobar_a") (4 5 "foo_cpp->foo_o")
    134                        (3 4 "zow_h->foo_cpp") (1 6 "yow_h->bar_cpp")
    135                        (1 11 "yow_h->zag_cpp")
    136                        )
    137                 ((g2 'edges-with-labels)))
    138          
    139           ))
    14096
     97(test-group "interval digraph test"
     98  (let* ((N 100) (k 2)
     99         
     100         (g (interval-digraph:make-digraph  'depgraph  "interval  graph"))
     101         
     102         ;; add the nodes to the graph
     103         (g ((g 'add-node-interval) (cis:interval 0 N)))
     104
     105         (g ((g 'add-node-interval) (cis:interval (* k N) (* (+ 1 k) N))))
     106
     107         )
     108
     109    (let ((nset (list-tabulate (+ 1 N) identity)) (delta (* k N)))
     110      ;; make sure all nodes got inserted
     111      (test "add nodes to the graph"
     112            (reverse (append  nset  (map (lambda (x) (+ x delta)) nset)))
     113            ((g 'nodes))))
     114
     115    (let* ((sources  (cis:interval 0 N))
     116           (targets  (cis:interval (* k N) (* (+ 1 k) N)))
     117           (g        (cis:fold-left
     118                      (lambda (i g)
     119                        ((g 'add-edge-interval) (list i targets)))
     120                      g sources)
     121                     ))
    141122     
    142       )
     123      (test "add edges to the graph"
     124            (cis:fold-right (lambda (x ax) (cis:fold-left (lambda (y ax) (cons (list x y) ax)) ax targets)) '() sources)
     125            ((g 'edges)))
    143126
     127      (let ((g ((g 'edge-interval-property-set) 'test sources targets "chicken")))
     128
     129        (test "edge-property" "chicken"
     130              ((g 'edge-property) 'test 10 220))
     131
     132        (test "edge-property-list-map" "chicken" 
     133              (((alist-ref 'test ((g 'edge-property-list-map) 10)) 'get-value)
     134               (cis:singleton 220)))
     135
     136      ))
    144137    ))
    145138
Note: See TracChangeset for help on using the changeset viewer.