;;; ;;; graph.egi ;;; (define $Node Integer) (define $NodeInfo (type {[,$val [] {[$tgt (match [val tgt] [NodeInfo NodeInfo] {[[ ] {[]}] [[_ _] {}]})]}] [ [Node (Multiset Node) (Multiset Node)] {[ {[n in out]}]}] [_ [Something] {[$tgt {tgt}]}] })) (define $Graph (Multiset NodeInfo)) (define $hamilton-cycle (lambda [$g] (let {[$n (size g)]} (match-all g Graph [ _> (loop $l $i (between 3 n) _> l> _> _>)> [@(loop $l $i (between 1 n) {a_i @l} {})]])))) (define $hamilton-path (lambda [$g] (let {[$n (size g)]} (match-all g Graph [ _> (loop $l $i (between 3 n) _> l> >)> [@(loop $l $i (between 1 n) {a_i @l} {})]]))))