Interval relations
You can just use \rule
for that.
\documentclass{article}
\usepackage{amsmath}
\newcommand{\linterval}{\mathbin{\rule[1ex]{0.1ex}{0.7ex}\rule[1.2ex]{1ex}{0.3ex}}}
\newcommand{\rinterval}{\mathbin{\rule[1.2ex]{1ex}{0.3ex}\rule[1ex]{0.1ex}{0.7ex}}}
\newcommand{\binterval}{\mathbin{\rule[1ex]{0.1ex}{0.7ex}\rule[1.2ex]{1ex}{0.3ex}\rule[1ex]{0.1ex}{0.7ex}}}
\begin{document}
$a\binterval b$, $a\linterval b$ and $a\rinterval b$.
\end{document}
They can be made very easily adjust to their size of the surroundings.
\documentclass{article}
\usepackage{amsmath,scalerel}
\newcommand{\linterval}{\mathbin{\scalerel*{\rule[1ex]{0.2ex}{0.7ex}\rule[1.25ex]{1ex}{0.2ex}}{Q}}}
\newcommand{\rinterval}{\mathbin{\scalerel*{\rule[1.25ex]{1ex}{0.2ex}\rule[1ex]{0.2ex}{0.7ex}}{Q}}}
\newcommand{\binterval}{\mathbin{\scalerel*{\rule[1ex]{0.2ex}{0.7ex}\rule[1.25ex]{1ex}{0.2ex}\rule[1ex]{0.2ex}{0.7ex}}{Q}}}
\begin{document}
$a\binterval b$, $a\linterval b$ and $a\rinterval b$.
\Large $a\binterval b$, $a\linterval b$ and $a\rinterval b$.
\tiny $a\binterval b$, $a\linterval b$ and $a\rinterval b$.
\end{document}
Another rule based solution, that doesn't try and guess the symbol's height from the baseline, because it treats it as a superscript. You can easily customize the parameters for the width, the height of the lateral bars and the thickness of the middle bar. These depend on the current font outside math mode, so they adjust automatically to larger or smaller sizes (not the width of the lateral bars, though, with the given implementation but you can decide to express it in em
units as well).
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\intoo}{\peano@interval00}
\newcommand{\intco}{\peano@interval10}
\newcommand{\intoc}{\peano@interval01}
\newcommand{\intcc}{\peano@interval11}
% the width of all symbols em in the current font before the math formula started
\newcommand{\peano@intervalwd}{0.5em}
% the thickness of the bar is 0.25ex in the font for superscripts
\newcommand{\peano@intervalthickness}{0.125ex}% half of the thickness
% the height of the lateral bars is 0.7ex in the font for superscripts
\newcommand{\peano@intervalht}{0.35ex}
\newcommand{\peano@intervalbar}{%
\vrule height \dimexpr\fontdimen22\scriptfont2+\peano@intervalht\relax
depth -\dimexpr\fontdimen22\scriptfont2-\peano@intervalht\relax
width 0.4pt
}
\newcommand{\peano@interval}[2]{{% a mathord
{\mathstrut}^{%
\mkern1mu
\makebox[\peano@intervalwd][s]{%
\fontsize\sf@size{0}\selectfont
$\m@th\scriptstyle
\ifnum#1=1 \peano@intervalbar\fi
\peano@intervalrule
\ifnum#2=1 \peano@intervalbar\fi
$%
}% end of \makebox
\mkern1mu
}% end of superscript
% remove the \scriptspace
\kern-\scriptspace
}}
\newcommand{\peano@intervalrule}{%
\leaders
\hrule height \dimexpr\fontdimen22\scriptfont2+\peano@intervalthickness\relax
depth -\dimexpr\fontdimen22\scriptfont2-\peano@intervalthickness\relax
\hfill
}
\makeatother
\begin{document}
$a\intoo b$
$a\intco b$
$a\intoc b$
$a\intcc b$
\Large
$a\intoo b$
$a\intcc b$
\end{document}
I propose to use the \mapstochar
and mapsfromchar
glyphs from mathabx
(without loading the package):
\documentclass{article}
\usepackage{mathtools}
\usepackage{rotating, graphicx}
\usepackage[export]{adjustbox}
\DeclareFontFamily{U}{matha}{\hyphenchar\font45}
\DeclareFontShape{U}{matha}{m}{n}{%
<-6> matha5
<6-7> matha6
<7-8> matha7
<8-9> matha8
<9-10> matha9
<10-12> matha10
<12-> matha12 }{}
\DeclareSymbolFont{matha}{U}{matha}{m}{n}
\DeclareMathSymbol{\mapsfromchar}{\mathrel}{matha}{"DF}
\DeclareMathSymbol{\varmapstochar}{\mathrel}{matha}{"DE}
\newcommand{\ccintv}{\raisebox{1\jot}{\boldmath$\,\varmapstochar\mkern-0.3mu\relbar\mkern-0.3mu\mapsfromchar\,$}}
\newcommand{\cointv}{\raisebox{1\jot}{\,\boldmath$\varmapstochar\mkern-0.4mu\relbar\mkern1.5mu$}}
\newcommand{\ocintv}{\raisebox{1\jot}{\boldmath$\mkern1.5mu\relbar\mkern-0.3mu\mapsfromchar $\,}}
\begin{document}
\begin{alignat*}{3}
& a \ccintv b &\qquad & a \cointv b &\qquad & a \ocintv b
\end{alignat*}
\end{document}