;; ;; Base.egi ;; (define $Something (type {[$var-match (lambda [$tgt] {tgt})]})) (define $Bool (type {[$var-match (lambda [$tgt] {tgt})] [$inductive-match (destructor {[true [] {[ {[]}] [#t {[]}] [_ {}]}] [false [] {[ {[]}] [#f {[]}] [_ {}]}]})] [$= (lambda [$val $tgt] (match [val tgt] [Bool Bool] {[[ ] #t] [[ ] #t] [[_ _] #f]}))]})) (define $or (lambda [$b1 $b2] (if b1 #t b2))) (define $and (lambda [$b1 $b2] (if b1 b2 #f))) (define $not (lambda [$b] (if b #f #t))) (define $Order (type {[$var-match (lambda [$tgt] {tgt})] [$inductive-match (destructor {[less [] {[ {[]}] [_ {}]}] [equal [] {[ {[]}] [_ {}]}] [greater [] {[ {[]}] [_ {}]}]})] [$= (lambda [$val $tgt] (match [val tgt] [Order Order] {[[ ] #t] [[ ] #t] [[ ] #t] [[_ _] #f]}))]}))