 partir de las declaraciones, crea los objetos "Derivation" juntando la informacion
--   de cada especificación con la correspondiente derivación y def de función en caso que
--   ocurra. Por ahora no se puede hacer más de una derivación de una misma especificación.
--   Además, la especificación de una derivación debe estar EN EL MISMO módulo que la derivación.
createDerivations:: Declarations -> [EDeriv]
createDerivations decls = foldl (createDeriv spcs fncs) [] drvs
    where drvs = decls ^. derivs 
          spcs = bare specs decls
          fncs = bare functions decls


createDeriv ::
createDerivations:: Declarations -> [EDeriv]
createDerivations decls = foldl (createDeriv spcs fncs) [] drvs
    where drvs = decls ^. derivs 
          spcs = bare specs decls
          fncs = bare functions decls
createDerivations decls = foldl (createDeriv spcs fncs) [] drvs
    where drvs = decls ^. derivs 
          spcs = bare specs decls
          fncs = bare functions decls