-- GeNeRaTeD fOr: ../../CBS-beta/Funcons-beta/Values/Abstraction/Generic/Generic.cbs {-# LANGUAGE OverloadedStrings #-} module Funcons.Core.Values.Abstraction.Generic.Generic where import Funcons.EDSL import Funcons.Operations hiding (Values,libFromList) entities = [] types = typeEnvFromList [("abstractions",DataTypeMemberss "abstractions" [TPWildCard] [DataTypeMemberConstructor "abstraction" [TSortComputesFrom (TVar "T?") (TVar "T")] (Just [TPComputesFrom (TPVar "T?") (TPVar "T")])])] funcons = libFromList [("abstraction",NonStrictFuncon stepAbstraction),("closure",NonStrictFuncon stepClosure),("enact",StrictFuncon stepEnact),("abstractions",StrictFuncon stepAbstractions)] abstraction_ fargs = FApp "abstraction" (fargs) stepAbstraction fargs = evalRules [rewrite1] [] where rewrite1 = do let env = emptyEnv env <- fsMatch fargs [PMetaVar "_X1"] env rewriteTermTo (TApp "non-strict-datatype-value" [TFuncon (FValue (ADTVal "list" [FValue (Char 'a'),FValue (Char 'b'),FValue (Char 's'),FValue (Char 't'),FValue (Char 'r'),FValue (Char 'a'),FValue (Char 'c'),FValue (Char 't'),FValue (Char 'i'),FValue (Char 'o'),FValue (Char 'n')])),TVar "_X1"]) env closure_ fargs = FApp "closure" (fargs) stepClosure fargs = evalRules [] [step1] where step1 = do let env = emptyEnv env <- lifted_fsMatch fargs [PMetaVar "X"] env env <- getInhPatt "environment" [VPMetaVar "Rho"] env stepTermTo (TApp "abstraction" [TApp "closed" [TApp "scope" [TVar "Rho",TVar "X"]]]) env enact_ fargs = FApp "enact" (fargs) stepEnact fargs = evalRules [rewrite1] [] where rewrite1 = do let env = emptyEnv env <- vsMatch fargs [PADT "abstraction" [VPMetaVar "X"]] env rewriteTermTo (TVar "X") env abstractions_ = FApp "abstractions" stepAbstractions ts = rewriteType "abstractions" ts