diff --git a/pub/lib/commands.cpp b/pub/lib/commands.cpp
index d751f7314fb3566bc3ad0f700f732b3a5317d614..7f82e64868741d09bb7ef34eee8c8fcde5f81540 100644
--- a/pub/lib/commands.cpp
+++ b/pub/lib/commands.cpp
@@ -14,6 +14,7 @@
 #include <map>
 #include <vector>
 #include <cstdio>
+#include <cmath>
 
 #include <../trivia/file_ops.hpp>
 #include <../readplus/ask.hpp>
diff --git a/pub/lib/expr.hpp b/pub/lib/expr.hpp
index 02dc2a1f18d5b52cfd900c7b6bfadf5a2aa4a97b..e874c5e55693b7b3ecf8e7f8f4f3f677d945ad9a 100644
--- a/pub/lib/expr.hpp
+++ b/pub/lib/expr.hpp
@@ -7,9 +7,6 @@
 //! \file  expr.hpp
 //! \brief Expressions are parsed into CRef, CContext, CObj, virtual CNode.
 
-#include <boost/shared_ptr.hpp>
-
-
 //! The context in which a CNode shall be evaluated.
 
 class CContext {
diff --git a/pub/lib/fassign.cpp b/pub/lib/fassign.cpp
index 043724ffb8b84df1121ea060ee7fdbe2d764f689..f40480b229ba77408086198477317b574f2fe78f 100644
--- a/pub/lib/fassign.cpp
+++ b/pub/lib/fassign.cpp
@@ -7,7 +7,7 @@
 //! \file  fassign.cpp
 //! \brief Collection of assignment functions.
 
-
+#include <cmath>
 #include <iostream>
 #include <map>
 #include <vector>
diff --git a/pub/lib/file_out.cpp b/pub/lib/file_out.cpp
index 5c540de08812be76f413e94273b9d0553d360606..b7bb98a7c8e142c6654f229c94667cd730239910 100644
--- a/pub/lib/file_out.cpp
+++ b/pub/lib/file_out.cpp
@@ -7,8 +7,9 @@
 //! \file  file_out.cpp
 //! \brief NFileOut: write files.
 
-
+#include <cmath>
 #include <string>
+#include <vector>
 
 #include <../trivia/yaml_out.hpp>
 #include <../readplus/ask.hpp>
diff --git a/pub/lib/import.cpp b/pub/lib/import.cpp
index a21502659ff83a80686a994735d97e0cb33df2ee..0f98dfd85861b1ec499f601c2dbdf470b15b4a17 100644
--- a/pub/lib/import.cpp
+++ b/pub/lib/import.cpp
@@ -7,6 +7,7 @@
 //! \file  import.cpp
 //! \brief NImport: import tables or make data ex nihilo
 
+#include <cmath>
 #include <iostream>
 #include <string>
 #include <vector>
diff --git a/pub/lib/mem.hpp b/pub/lib/mem.hpp
index c0313901c58cc093feff7b93abe70c24fae59b56..b018222314002cc842b9da7814651cdb8caa94fe 100644
--- a/pub/lib/mem.hpp
+++ b/pub/lib/mem.hpp
@@ -46,7 +46,7 @@ namespace NOlm {
     class IterateO {
      protected:
         // unique_ptr<class MyIterate> pimpl;
-        boost::shared_ptr<class MyIterate> pimpl;
+        std::shared_ptr<class MyIterate> pimpl;
      public:
         IterateO( int mode=0 );
         virtual ~IterateO();
diff --git a/pub/lib/node.hpp b/pub/lib/node.hpp
index 66e32e539dcdc3a3ffa6b9df54372ec1b108fe7c..69f216b816ebfcf971af4859f58f387898847cb1 100644
--- a/pub/lib/node.hpp
+++ b/pub/lib/node.hpp
@@ -9,7 +9,7 @@
 
 //! Base class CNode is declared elsewhere (expr.hpp).
 
-typedef boost::shared_ptr<class CVar> PVar;
+typedef std::shared_ptr<class CVar> PVar;
 
 
 //! Node with a few arguments. Pure virtual base class.
diff --git a/pub/lib/olf.cpp b/pub/lib/olf.cpp
index 3f53c542bd5775c3d93afa9ed8547393e02195be..6cd78dd1c102f0e4bb4359fed2c2f3410584e5d9 100644
--- a/pub/lib/olf.cpp
+++ b/pub/lib/olf.cpp
@@ -12,6 +12,7 @@
 #include <sstream>
 #include <exception>
 #include <algorithm>
+#include <memory>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <boost/format.hpp>
@@ -144,7 +145,7 @@ PSpec COld::VS( int j ) const
 {
     if( j>=V.size() )
         throw "VS call with j=" + S(j) + " though V.size=" + S(V.size());
-    PSpec s = boost::dynamic_pointer_cast<class CSpec>( V[j] );
+    PSpec s = std::dynamic_pointer_cast<class CSpec>( V[j] );
     if ( !s )
         throw "invalid VS call";
     return s;
@@ -154,7 +155,7 @@ PCurve COlc::VC( int j ) const
 {
     if( j>=V.size() )
         throw "VC call with j=" + S(j) + " though V.size=" + S(V.size());
-    PCurve c = boost::dynamic_pointer_cast<class CCurve>( V[j] );
+    PCurve c = std::dynamic_pointer_cast<class CCurve>( V[j] );
     if ( !c )
         throw S("invalid VC call");
     return c;
diff --git a/pub/lib/olf.hpp b/pub/lib/olf.hpp
index 9beb012d1fa4a85ba192a0929cdb66d6640b1e1d..99b865098aea7fbfca1fa19d3baafbc3316b6377 100644
--- a/pub/lib/olf.hpp
+++ b/pub/lib/olf.hpp
@@ -134,7 +134,7 @@ public:
 
 //! Casts.
 
-#define P2D(p) boost::dynamic_pointer_cast<      class COld>(p)
-#define R2D(p) boost::dynamic_pointer_cast<const class COld>(p)
-#define P2C(p) boost::dynamic_pointer_cast<      class COlc>(p)
-#define R2C(p) boost::dynamic_pointer_cast<const class COlc>(p)
+#define P2D(p) std::dynamic_pointer_cast<      class COld>(p)
+#define R2D(p) std::dynamic_pointer_cast<const class COld>(p)
+#define P2C(p) std::dynamic_pointer_cast<      class COlc>(p)
+#define R2C(p) std::dynamic_pointer_cast<const class COlc>(p)
diff --git a/pub/lib/ptr.hpp b/pub/lib/ptr.hpp
index aa4fc7f7c28ceedaa00ea186ed1fc3ae2482efd0..27434af3f43c194de45ce12ae2d98812361982ea 100644
--- a/pub/lib/ptr.hpp
+++ b/pub/lib/ptr.hpp
@@ -7,13 +7,13 @@
 //! \file  ptr.hpp
 //! \brief pointer forward declarations POlo, PNode, and so on (.h file only)
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
-#define PCAST boost::dynamic_pointer_cast
-#define SPTR boost::shared_ptr
+#define PCAST std::dynamic_pointer_cast
+#define SPTR std::shared_ptr
 #define DEF_PTR( C, P, R ) \
-    typedef boost::shared_ptr<      class C> P;  \
-    typedef boost::shared_ptr<const class C> R
+    typedef std::shared_ptr<      class C> P;  \
+    typedef std::shared_ptr<const class C> R
     
 DEF_PTR( COlo,       POlo,       ROlo );
 DEF_PTR( COlc,       POlc,       ROlc );
diff --git a/pub/lib/special.cpp b/pub/lib/special.cpp
index d6a368f0f1f4a6307684a91a3b8a95f024a15e48..42aed523d23c4ad689a1675cf4f6787ef3e43022 100644
--- a/pub/lib/special.cpp
+++ b/pub/lib/special.cpp
@@ -7,12 +7,14 @@
 //! \file  special.cpp
 //! \brief NSpecial: this and that, written ad hoc.
 
-
+#include <cmath>
 #include <iostream>
-#include <fftw3.h>
 #include <string>
+#include <vector>
 
-#include <../readplus/ask.hpp>
+#include <fftw3.h>
+
+#include "../readplus/ask.hpp"
 
 #include "defs.hpp"
 #include "olf.hpp"
@@ -115,4 +117,4 @@ void NSpecial::Test()
         fout->V.push_back(s);
     }
     NOlm::mem_store( fout );
-}
\ No newline at end of file
+}
diff --git a/pub/lib/toplevel.cpp b/pub/lib/toplevel.cpp
index 4e0f08c7ad49d6e9ab4bcd42c3a1816f14c1a3cb..7246f4ce0a2f57dc842caac479349af96dc4c1e6 100644
--- a/pub/lib/toplevel.cpp
+++ b/pub/lib/toplevel.cpp
@@ -8,6 +8,7 @@
 //! \brief Execution context CFrida.
 
 
+#include <cmath>
 #include <cstdlib>
 #include <iostream>
 #include <fstream>
diff --git a/pub/lib/xax_lex.hpp b/pub/lib/xax_lex.hpp
index 407c852999d3647606c587f15d4ec3a2cd6615fb..595c4ed32e31f81c2ddab9827b33e4382291c7cc 100644
--- a/pub/lib/xax_lex.hpp
+++ b/pub/lib/xax_lex.hpp
@@ -7,4 +7,4 @@
 //! \file  xax_lex.hpp
 //! \brief Declares user_xaxparse, the parser call implented in xax_lex.lpp.
 
-boost::shared_ptr<const class CNode> user_xaxparse(const char *lin);
+std::shared_ptr<const class CNode> user_xaxparse(const char *lin);
diff --git a/pub/lib/xax_lex.lpp b/pub/lib/xax_lex.lpp
index bfb597b74b6e4d26680cc9b07230f0c5683f0a41..fdff86dcb163413139249fd610e100022948b8cb 100644
--- a/pub/lib/xax_lex.lpp
+++ b/pub/lib/xax_lex.lpp
@@ -17,7 +17,7 @@
 #include <vector>
 #include <map>
 #include <cmath>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include <boost/algorithm/string/replace.hpp>
 
 #include "defs.hpp"
@@ -159,7 +159,7 @@ e {
 
 int xaxparse( PNode* );
 
-boost::shared_ptr<const class CNode> user_xaxparse( const char *lin )
+std::shared_ptr<const class CNode> user_xaxparse( const char *lin )
 {
         PNode T;
 	int err;
diff --git a/pub/lib/xax_yacc.ypp b/pub/lib/xax_yacc.ypp
index f1d7ca86427e1ec206463dd8f28345a1b9147913..b3e7e3165000058be7ab0a84ca64579d3cfe6115 100644
--- a/pub/lib/xax_yacc.ypp
+++ b/pub/lib/xax_yacc.ypp
@@ -8,6 +8,7 @@
 //! \brief parser for eXtended Array eXpressions
 
 %{
+#include <cmath>
 #include <string>
 #include <map>
 #include <vector>