\RequirePackage{mathtools}
\newcommand{\nuage}[4]{
  \draw[xshift=#1-3.5cm,yshift=#2-2cm] (2.55,0.5) 
  .. controls (1.42,0.31) and (0.815,0.899) .. (0.91,1.4)
  .. controls (0,1.59) and (0.26,2.64) .. (0.68,2.64)
  .. controls (0.62,3.13) and (1.66,3.64) .. (2.25,3.38)
  .. controls (2.49,3.79) and (3.23,3.86) .. (3.96,3.88)
  .. controls (4.59,3.9)and (4.96,3.85) .. (5.23,3.57)
  .. controls (6.28,3.67) and (6.75,2.96) .. (6.52,2.46)
  .. controls (6.93,2.36) and (6.96,1.56) .. (6.37,1.45)
  .. controls (6.64,0.9) and (6.03,0.4) .. (5.2,0.5)
  .. controls (4.53,-0.08) and (2.8,0.01) .. (2.55,0.5)
  ;
  \draw[xshift=#1,yshift=#2] (0,0) node[inner sep=6mm] (#3) {#4} ;
}

\newcommand{\sauna}{\textsc{SAUNA}\xspace}

\usepackage{component}

\newcommand{\obj}[1]{\textbf{\textsc{OBJECTIF} : {#1}}}
\newcommand{\para}{\mathop{|}}
\newcommand{\optparam}[1]{{\color{blue!50}(#1)}}
\newcommand{\Cdash}[1][]{\ensuremath{\;{\color{blue} \vdash_{#1}}\;}}
\newcommand{\Ccol}{\ensuremath{\;{\color{blue} :}\;}}
\newcommand{\Ceval}{\ensuremath{\;{\color{blue} \mapsto}\;}}
\newcommand{\Cred}{\ensuremath{\;{\color{blue} \to}\;}}

\newcommand*{\env}[1][]{%
  \def\@tempa{#1}%
  \ifx\@tempa\@empty%
    \ensuremath{\mathcal{E}}%
  \else%
    \ensuremath{\mathcal{E}_{#1}}%
  \fi%
}
\newcommand*{\cst}[1][]{%
  \def\@tempa{#1}%
  \ifx\@tempa\@empty%
    \ensuremath{\varphi}%
  \else%
    \ensuremath{\varphi_{#1}}%
  \fi%
}

\newcommand*{\comp}{\ensuremath{\mathcal{C}}}
\newcommand*{\dg}{\ensuremath{\mathcal{G}}}
\newcommand*{\ps}{\ensuremath{\mathcal{P}_s}}
\newcommand*{\fs}{\ensuremath{\mathcal{F}_s}}
\providecommand*{\fc}{\ensuremath{\mathcal{F}_c}}
\newcommand*{\forbidc}{\ensuremath{\mathcal{F}_c}}
\newcommand*{\foc}{\ensuremath{\mathcal{F}_c}}
\newcommand*{\AS}{\ensuremath{\mathit{AS}}}
\newcommand*{\AC}{\ensuremath{\mathit{AC}}}
\newcommand*{\FS}{\ensuremath{\mathit{FS}}}
\newcommand*{\FC}{\ensuremath{\mathit{FC}}}

\newcommand*{\MD}{\ensuremath{\mathit{MD}}}
\newcommand*{\OD}{\ensuremath{\mathit{OD}}}
\newcommand*{\lmand}{\textsf{M}}
\newcommand*{\lopt}{\textsf{O}}
\newcommand*{\Nat}{{\mathbb N}}
\newcommand*{\Real}{{\mathbb R}}
\newcommand*{\compo}[1]{\ensuremath{C_{#1}}}
\newcommand*{\serv}[1]{\ensuremath{S_{#1}}}
\newcommand*{\kdep}[3]{\ensuremath{#1\xmapsto{#2}#3}}
\newcommand*{\manddep}[2]{\kdep{#1}{\lmand}{#2}}
\newcommand*{\manddepp}[2]{\kdep{#1}{\lmand,\varphi_c,\varphi_s}{#2}}
\newcommand*{\optdep}[2]{\kdep{#1}{\lopt}{#2}}
\newcommand*{\optdepp}[2]{\kdep{#1}{\lopt,\varphi_c,\varphi_s}{#2}}
\newcommand*{\dep}[2]{\kdep{#1}{-}{#2}}
\newcommand*{\depp}[2]{\kdep{#1}{-,\varphi_c,\varphi_s}{#2}}
\newcommand*{\optD}[1]{\ensuremath{\mathop{?}#1}}
\newcommand*{\andD}[2]{\ensuremath{#1 \mathbin{\bullet} #2}}
\newcommand*{\orD}[2]{\ensuremath{#1 \mathbin{\#} #2}}
\newcommand*{\sD}[2]{\ensuremath{#1 \!\Rightarrow\! #2}}
\newcommand*{\compP}[3]{\ensuremath{[#1 \mathbin{#2} #3]}}
\newcommand*{\vOval}{\compP{v}{O}{\mathit{val}}}
\newcommand*{\trueP}{\ensuremath{\mathit{true}}}
\newcommand*{\nP}[1]{\ensuremath{\mathop{\lnot} #1}}
\newcommand*{\replace}[2]{\ensuremath{#1 \gets #2}}
\newcommand{\maregle}[3]{
\inferrule*[left={\tiny#1:}]{#2}{#3} }
\newcommand{\maregleI}[3]{
\inferrule*{#2}{#3} }
\newcommand{\nomregle}[1]{{\small{\textsc{#1}}}}

\newcommand*{\service}[2][]{%
  \def\@tempa{#1}%
  \ifx\@tempa\@empty%
    \ensuremath{#2}%
  \else%
    \ensuremath{#2[#1]}%
  \fi
}
\newcommand*{\propset}[1][]{%
  \def\@tempa{#1}%
  \ifx\@tempa\@empty%
    \ensuremath{p_1 = v_1, \ldots, p_n = v_n}%
  \else%
    \ensuremath{p_1#1_1 v_1, \ldots, p_n#1_n v_n}
  \fi
}
