title: Solidity | Proper use of "using a for b" statement in derived contracts
body: <p>I have a contract using Open-Zeppelin SafeMath, but that declaration is not recognized by derived contracts.</p>
  <p><strong>Base.sol</strong></p>
  <pre><code>// SPDX-License-Identifier: MIT
  pragma solidity ^0.7.4;
  
  import &quot;@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol&quot;;
  
  contract Base  {
      using SafeMath for uint256;
  }
  </code></pre>
  <p><strong>Test.sol</strong></p>
  <pre><code>// SPDX-License-Identifier: MIT
  pragma solidity ^0.7.4;
  
  import &quot;Base.sol&quot;;
  
  contract Test is Base {
      function getnum(uint256 _number) external view returns (uint256) {
          return _number.add(_number);
      }
  }
  </code></pre>
  <p>But I keep getting this error:</p>
  <pre><code>Member &quot;add&quot; not found or not visible after argument-dependent lookup in uint256.
  </code></pre>