\usepackage{url}

\newcommand{\variantspringer}[1]{#1}
\newcommand{\marginok}[1]{\marginpar{\raggedright OK:#1}}
\newcommand{\tab}{{\null\hskip1cm}}
\newcommand{\Ltac}{\mbox{\emph{$\cal L$}tac}}
\newcommand{\coq}{\mbox{\emph{Coq}}}
\newcommand{\lcf}{\mbox{\emph{LCF}}}
\newcommand{\hol}{\mbox{\emph{HOL}}}
\newcommand{\pvs}{\mbox{\emph{PVS}}}
\newcommand{\isabelle}{\mbox{\emph{Isabelle}}}
\newcommand{\prolog}{\mbox{\emph{Prolog}}}
\newcommand{\goalbar}{\tt{}============================\it}
\newcommand{\gallina}{\mbox{\emph{Gallina}}}
\newcommand{\joker}{\texttt{\_}}
\newcommand{\eprime}{\(\e^{\prime}\)}
\newcommand{\Ztype}{\citecoq{Z}}
\newcommand{\propsort}{\citecoq{Prop}}
\newcommand{\setsort}{\citecoq{Set}}
\newcommand{\typesort}{\citecoq{Type}}
\newcommand{\ocaml}{\mbox{\emph{OCAML}}}
\newcommand{\haskell}{\mbox{\emph{Haskell}}}
\newcommand{\why}{\mbox{\emph{Why}}}
\newcommand{\Pascal}{\mbox{\emph{Pascal}}}

\newcommand{\ml}{\mbox{\emph{ML}}}

\newcommand{\scheme}{\mbox{\emph{Scheme}}}
\newcommand{\lisp}{\mbox{\emph{Lisp}}}

\newcommand{\implarrow}{\mbox{$\Rightarrow$}}
\newcommand{\metavar}[1]{?#1}
\newcommand{\notincoq}[1]{#1}
\newcommand{\coqscope}[1]{\%#1}
\newcommand{\arrow}{\mbox{$\rightarrow$}}
\newcommand{\fleche}{\arrow}
\newcommand{\funarrow}{\mbox{$\Rightarrow$}}
\newcommand{\ltacarrow}{\funarrow}
\newcommand{\coqand}{\mbox{\(\wedge\)}}
\newcommand{\coqor}{\mbox{\(\vee\)}}
\newcommand{\coqnot}{\mbox{\(\neg\)}}
\newcommand{\hide}[1]{}
\newcommand{\hidedots}[1]{...}
\newcommand{\sig}[3]{\texttt{\{}#1\texttt{:}#2 \texttt{|} #3\texttt{\}}}
\renewcommand{\neg}{\sim}
\renewcommand{\marginpar}[1]{}

\addtocounter{secnumdepth}{1}
\providecommand{\og}{«}
\providecommand{\fg}{»}


\newcommand{\hard}{\mbox{\small *}}
\newcommand{\xhard}{\mbox{\small **}}
\newcommand{\xxhard}{\mbox{\small ***}}

%%% Operateurs, etc.
\newcommand{\impl}{\mbox{$\rightarrow$}}
\newcommand{\appli}[2]{\mbox{\tt{#1 #2}}}
\newcommand{\applis}[1]{\mbox{\texttt{#1}}}
\newcommand{\abst}[3]{\mbox{\tt{fun #1:#2 \funarrow #3}}}
\newcommand{\coqle}{\mbox{$\leq$}}
\newcommand{\coqge}{\mbox{$\geq$}}
\newcommand{\coqdiff}{\mbox{$\neq$}}
\newcommand{\coqiff}{\mbox{$\leftrightarrow$}}
\newcommand{\prodsym}{\mbox{\(\forall\,\)}}
\newcommand{\exsym}{\mbox{\(\exists\,\)}}

\newcommand{\substsign}{/}
\newcommand{\subst}[3]{\mbox{#1\{#2\substsign{}#3\}}}
\newcommand{\anoabst}[2]{\mbox{\tt[#1]#2}}
\newcommand{\letin}[3]{\mbox{\tt let #1:=#2 in #3}}
\newcommand{\prodep}[3]{\mbox{\tt \(\forall\,\)#1:#2,$\,$#3}}
\newcommand{\prodplus}[2]{\mbox{\tt\(\forall\,\)$\,$#1,$\,$#2}}
\newcommand{\dom}[1]{\textrm{dom}(#1)} % domaine d'un contexte (log function)
\newcommand{\norm}[1]{\textrm{n}(#1)} % forme normale (log function)
\newcommand{\coqZ}[1]{\mbox{\tt{`#1`}}}
\newcommand{\coqnat}[1]{\mbox{\tt{#1}}}
\newcommand{\coqcart}[2]{\mbox{\tt{#1*#2}}}
\newcommand{\alphacong}{\mbox{$\,\cong_{\alpha}\,$}} % alpha-congruence
\newcommand{\betareduc}{\mbox{$\,\rightsquigarrow_{\!\beta}$}\,} % beta reduction
%\newcommand{\betastar}{\mbox{$\,\Rightarrow_{\!\beta}^{*}\,$}} % beta reduction
\newcommand{\deltareduc}{\mbox{$\,\rightsquigarrow_{\!\delta}$}\,} % delta reduction
\newcommand{\dbreduc}{\mbox{$\,\rightsquigarrow_{\!\delta\beta}$}\,} % delta,beta reduction
\newcommand{\ireduc}{\mbox{$\,\rightsquigarrow_{\!\iota}$}\,} % delta,beta reduction


% jugement de typage
\newcommand{\these}{\boldsymbol{\large \vdash}}
\newcommand{\disj}{\mbox{$\backslash/$}}
\newcommand{\conj}{\mbox{$/\backslash$}}
%\newcommand{\juge}[3]{\mbox{$#1 \boldsymbol{\vdash} #2 : #3 $}}
\newcommand{\juge}[4]{\mbox{$#1,#2 \these #3 \boldsymbol{:} #4 $}}
\newcommand{\smalljuge}[3]{\mbox{$#1 \these #2 \boldsymbol{:} #3 $}}
\newcommand{\goal}[3]{\mbox{$#1,#2 \these^{\!\!\!?} #3  $}}
\newcommand{\sgoal}[2]{\mbox{$#1\these^{\!\!\!\!?} #2 $}}
\newcommand{\reduc}[5]{\mbox{$#1,#2 \these #3 \rhd_{#4}#5 $}}
\newcommand{\convert}[5]{\mbox{$#1,#2 \these #3 =_{#4}#5 $}}
\newcommand{\convorder}[5]{\mbox{$#1,#2 \these #3\leq _{#4}#5 $}}
\newcommand{\wouff}[2]{\mbox{$\emph{WF}(#1)[#2]$}}


%\newcommand{\mthese}{\underset{M}{\vdash}}
\newcommand{\mthese}{\boldsymbol{\vdash}_{\!\!M}}
\newcommand{\type}{\boldsymbol{:}}

% jugement absolu

%\newcommand{\ajuge}[2]{\mbox{$ \boldsymbol{\vdash} #1 : #2 $}}
\newcommand{\ajuge}[2]{\mbox{$\these #1 \boldsymbol{:} #2 $}}

%%% logique minimale
\newcommand{\propzero}{\mbox{$P_0$}} % types de Fzero

%%% logique propositionnelle classique
\newcommand {\ff}{\boldsymbol{f}} % faux
\newcommand {\vv}{\boldsymbol{t}} % vrai

\newcommand{\verite}{\mbox{$\cal{B}$}} % {\ff,\vv}
\newcommand{\sequ}[2]{\mbox{$#1 \vdash #2 $}} % sequent
\newcommand{\strip}[1]{#1^o} % enlever les variables d'un contexte



%%% tactiques
\newcommand{\decomp}{\delta} % decomposition
\newcommand{\recomp}{\rho} % recomposition

%%% divers
\newcommand{\cqfd}{\mbox{\textbf{cqfd}}}
\newcommand{\fail}{\mbox{\textbf{F}}}
\newcommand{\succes}{\mbox{$\blacksquare$}}
%%% Environnements


%% Fzero
\newcommand{\con}{\mbox{$\cal C$}}
\newcommand{\var}{\mbox{$\cal V$}}

\newcommand{\atomzero}{\mbox{${\cal A}_0$}} % types de base de Fzero
\newcommand{\typezero}{\mbox{${\cal T}_0$}} % types de Fzero
\newcommand{\termzero}{\mbox{$\Lambda_0$}} % termes de Fzero 
\newcommand{\conzero}{\mbox{$\cal C_0$}} % contextes de Fzero 

\newcommand{\buts}{\mbox{$\cal B$}} % buts

%%% for drawing terms
% abstraction [x:t]e
\newcommand{\PicAbst}[3]{\begin{bundle}{\bf abst}\chunk{#1}\chunk{#2}\chunk{#3}%
                        \end{bundle}}

% the same in DeBruijn form
\newcommand{\PicDbj}[2]{\begin{bundle}{\bf abst}\chunk{#1}\chunk{#2}
                       \end{bundle}}


% applications
\newcommand{\PicAppl}[2]{\begin{bundle}{\bf appl}\chunk{#1}\chunk{#2}%
                         \end{bundle}}

% variables
\newcommand{\PicVar}[1]{\begin{bundle}{\bf var}\chunk{#1}
                          \end{bundle}}

% constantes
\newcommand{\PicCon}[1]{\begin{bundle}{\bf const}\chunk{#1}\end{bundle}}

% arrows
\newcommand{\PicImpl}[2]{\begin{bundle}{\impl}\chunk{#1}\chunk{#2}%
                         \end{bundle}}



%%%% scripts coq
\newcommand{\prompt}{\mbox{\sl Coq $<\;$}}
\newcommand{\natquicksort}{\texttt{nat\_quicksort}}
\newcommand{\citecoq}[1]{\mbox{\texttt{#1}}}
\newcommand{\safeit}{\it}
\newtheorem{remarque}{Remark}[section]
%\newtheorem{definition}{Definition}[chapter]
