%\documentclass[12pt]{amsart}
\documentclass[pdftex,12pt]{amsart}
%\usepackage{listings}
\usepackage[portuges]{babel}
\usepackage{hyperref}


%\lstloadlanguages{Pascal,Haskell}
%\lstset{frame=tb}
%\input{defalgo}
\input{defport}
\input{deflogic}
\input{defseqs}
\input{deftrees}


\title{ADT: warm up}
\author{Raul H.C.Lopes}
\begin{document}
\maketitle
\section{Introdu\c{c}\~ao}
Esta lista\footnote{
Veja se\c{c}\~ao \ref{altersec} sobre altera\c{c}\~oes desta lista feitas desde
a \'ultima vers\~ao.}
cont\'em exerc\ii cios de constru\cao\ e corre\cao\ de algoritmos
recursivos e propriedades de \sqn s e \tree s.
Uma prova s\oo\ ser\aa\ considerada v\aa lida se cada um de
seus passos (repito, cada um de seus passos) for claramente justificado por:
\begin{itemize}
	\item um axioma ou regra de infer\^encia da l\oo gica;
	\item um teorema ou lema previamente provado e apresentado nesta prova.
\end{itemize}

Cada passo de uma prova deve ser devidamente anotado com o axioma, regra
de infer\^encia ou teorema que o justifica. 

Todas as suas defini\coes\ e provas ser\ao, 
em princ\ii pio, apresentadas em l\oo gica de
primeira ordem, usando \emph{equational reasoning}, como feito em sala
de aula. Voc\^e \ee\ livre para usar outra l\oo gica e/ou formalismo de
prova desde que devidamente justificado: ou seja, anuncie claramente o
formalismo que usar\aa\ e identifique explicitamente cada regra de infer\^encia
usada nas provas. Por exemplo, defini\coes\ em Haskell, dever\ao\ ser
acompanhadas por axiomas definindo a sem\^antica dos operadores da linguagem
usados, o que provavelmente voc\^e n\~ao conhece.

A nota\cao\ de pontos de Curry, apresentada em sala e notas de aula
e  na p\aa gina 34 de \cite{curry:foundations}, \ee\ utilizada para reduzir 
o uso de par\^enteses.
 
\section{Quantificadores}

\def\qop{\ensuremath{\star}}

Quantificadores representam papel importante em propriedade e provas sobre 
algoritmos e estruras de dados. Estas notas introduzem axiomas fundamentais
para trabalhar com quantificadores, mas n\~ao substituem fontes cl\'assicas
como \cite{kleene:meta52} e \cite{gs:discretemaths}.

Nesta se\c{c}\~ao, assuma que:
\begin{itemize}
	\item $R.x, Q.X, P.x$ s\~ao fun\c{c}\~oes booleanas de $x$ 
		(onde $x$ ocorre
		livre);
	\item $f.x$ \'e uma fun\c{c}\~ao\ aritm\'etica de $x$.
	\item $S.x,T.x$ s\~ao uma fun\c{c}\~oes quaisquer de $x$.
\end{itemize}

Os quantificadores s\~ao apresentados neste curso
com a seguinte nota\c{c}\~ao:
\begin{notation}
	\bnd{\qop}{x}{R.x}{P.x}

	onde:
	\begin{itemize}
		\item $x$ \'e o par\^ametro sobre o qual a senten\c{c}a 
			\'e quantificada (\emph{bound
			variable});
		\item $R.x$ \'e o universo da quantifica\c{c}\~ao;
		\item $P.x$ \'e o corpo da quantifica\c{c}\~ao.
	\end{itemize}
\end{notation}

Alguns exemplos de quantificadores comumente usados e sua nota\c{c}\~ao usual
em textos de matem\'atica:
\begin{align*}
	\bnd{\land}{x}{R.x}{P.x}&=\bndA{x}{R.x}{P.x}\\
	\bnd{\lor}{x}{R.x}{P.x}&=\bndE{x}{R.x}{P.x}\\
	\bnd{+}{x}{R.x}{f.x}&=\bnd{\sum}{x}{R.x}{f.x}=\sum_{R.x}f.x\\
	\bnd{.}{x}{R.x}{f.x}&=\bnd{\prod}{x}{R.x}{f.x}=\prod_{R.x}{f.x}
\end{align*}
Os seguintes operadores definem m\'aximo e m\'{\i}nimo de inteiros.
\begin{align}
	\label{mina}a\le b\limp\lr.\xbmin ab=a\\
	\label{minb}a\ge b\limp\lr.\xbmin ab=b\\
	\label{maxa}a\le b\limp\lr.\xbmax ab=b\\
	\label{maxb}a\ge b\limp\lr.\xbmax ab=a
\end{align}

Suas respectivas identidades s\~ao:
\begin{align}
	\label{xminid}\xbmin a\infty = a = \xbmin\infty a\\
	\label{xmaxid}\xbmax a{-\infty} = a = \xbmax{-\infty}a
\end{align}
Eles tamb\'em podem ser usados como quantificadores. Por exemplo em:
$$\bnd{\xminftor}{i}{i\in\mathbb N}{\lelt{10}i{100}}{f.i}$$
significando o m\'{\i}nimo dos $f.i$ com $i$ inteiro 
maior ou igual que $10$ e menor
do que $100$.

Uma vari\'avel $x$ tem ocorr\^encia livre em uma express\~ao $P$ se
tem uma ocorr\^encia que n\~ao \'e par\^ametro de (amarrada por) nenhum
quantificador. 
A nota\c{c}\~ao $P[x:=E]$ ser\'a usada para indicar o resultado de substituir 
todas as ocorr\^encias livres de $x$ (em $P$) por $E$.

Assuma que $\qop$ seja 
um operador bin\'ario com as seguintes propriedade:
\begin{align*}
	&\text{\bf Simetria: } b\qop c = c\qop b\\
	&\text{\bf Associatividade: } a\qop(b\qop c)=(a\qop b)\qop c\\
	&\text{\bf Identidade }u_\qop\text{\bf: } u_\qop\qop b = b = b\qop u_\qop
\end{align*}


Os seguintes axiomas permitem trabalhar com quantificadores:
\begin{align}
	\label{emptyrange}&\bnd{\qop}{x}{\lfalse}{T.x}=u_\qop\\
	\label{onepoint}&\bnd{\qop}{x}{x=E}{T.x}=T[x:=E]\\
	\label{quantdist}&\bnd{\qop}{x}{R.x}{S.x}\qop\bnd{\qop}{x}{R.x}{T.x}=
	                  \bnd{\qop}{x}{R.x}{S.x\qop T.x}\\
	\label{rangesplit}&\bnd{\qop}{x}{P.x\lor R.x}{T.x}\qop
			\bnd{\qop}{x}{P.x\land R.x}{T.x}\quad=\\
	&\qquad\bnd{\qop}{x}{P.x}{T.x}\qop\bnd{\qop}{x}{R.x}{T.x}\nonumber\\
	\label{idempotentsplit} &\bnd{\qop}{x}{P.x\lor R.x}{T.x}=
				\bnd{\qop}{x}{P.x}{T.x}\qop
				\bnd{\qop}{x}{R.x}{T.x}
\end{align}

\begin{ex}
	Prove:
	\begin{enumerate}
		\item$\bnd{\qop}{i\in\mathbb N}{\lelt 0i{n+1}}{T.i}=
			\bnd{\qop}{i\in\mathbb N}{\lelt 0i{n}}{T.i}\qop
			T[i:=n]$
			\solbeg
			\begin{align*}
			&\bnd{\qop}{i\in\mathbb N}{\lelt 0i{n+1}}{T.i}\\
			=&\jsttp{arim\'etica: }{\lelt 0i{n+1}=\lele 0in}\\
			&\bnd{\qop}{i\in\mathbb N}{\lele 0in}{T.i}\\
			=&\jsttp{aritm\'etica: }{\lele0in=(\lelt0in\lor i=n)}\\
			&\bnd{\qop}{i\in\mathbb N}{\lelt 0in\lor i=n}{T.i}\\
			=&\jstop{axioma\ \ref{idempotentsplit}}\\
			&\bnd{\qop}{i\in\mathbb N}{\lelt 0in}{T.i}\qop
			 \bnd{\qop}{i\in\mathbb N}{i=n}{T.i}\\
			 =&\jstop{axioma\ \ref{onepoint}}\\
			&\bnd{\qop}{i\in\mathbb N}{\lelt 0in}{T.i}\qop T[i:=n]
			\end{align*}

			\solend
		\item$\bnd{\qop}{i\in\mathbb N}{\lelt 0i{n+1}}{T.i}=
			T[i:=0]\qop
			\bnd{\qop}{i\in\mathbb N}{\ltlt 0i{n+1}}{T.i}$
	\end{enumerate}
\end{ex}

Os seguintes axiomas valem para os quantificadores l\'ogicos
($\forall,\exists$).

\begin{align}
	\label{foralltrade}\bndA{x}{R.x}{P.x}=\forall{x:R.x\limp P.x}\\
	\label{existstrade}\bndE{x}{R.x}{P.x}=\exists{x:R.x\land P.x}\\
	\label{gendemorgan}\bndE{x}{R.x}{P.x}=\neg\bndA{x}{R.x}{\neg P.x}\\
	\label{forallinst}\bndA{x}{R.x}{P.x}\follows R[x:=E]\limp P[x:=E]
\end{align}

A seguinte regra de infer\^encia \'e usada para provar senten\c{c}as
universalmente quantificadas, assumindo que $\hat x$ \'e par\^ametro que 
n\~ao ocorre livre em $\Gamma$ ou $P$.

\begin{align}
	\label{forallgen}\infronep{\Gamma}{P[x:=\hat x]}{\Gamma}{\forall x:P.x}
\end{align}


\section{Seq\"u\^encias}\label{seqssec}
Uma \sqn\ de elementos de um tipo $A$  \ee\ uma \sqn\ vazia (denotada por
$\xnil$) ou resultado de adicionar um elemento de $A$ a uma \sqn\ de 
elementos de $A$. Os axiomas a seguir definem \sqn s de elementos
de $A$, denotada \sqntype A:
\begin{align}
	\label{nilseq} &\xnil \in \sqntype A\\
	\label{consseq} &(\xcons ax)\in\sqntype A \lif x\in\sqntype A \land a\in A\\
	\label{closure}& \text{fecho universal.}
\end{align}

Assumindo que $x,y\in\sqntype A$ e que $a,b\in A$, os seguintes axiomas 
tratam a igualdade sobre \sqn s.
\begin{align}
	\label{xnildif}&\xnil\neq (\xcons ax)\\
	\label{conseq} &(\xcons ax) = (\xcons by) \llr.= a=b \land x=y
\end{align}

O princ\ii pio da indu\cao\ sobre \sqn s estabelece condi\coes\ para que uma
propriedade $P$ seja v\aa lida para qualquer \sqn, sendo denotado
$WPI(P)$. 
\begin{align}
	WPS(P)&\dfn (\bndA{x}{x\in\sqntype A}{\bndA{a}{a\in  A}
                      {P.x}\limp P.\xcons ax})\\
		      \label{seqind}	WPI(P)&\dfn (P.\xnil\land WPS(P))\limp(\bndA{x}{x\in\sqntype
		      A}{P.x})
\end{align}
						      

O axioma \ref{natind}, a seguir, define o princ\'{\i}pio de
indu\c{c}\~ao sobre inteiros n\~ao negativos, onde $P.i$ \'e uma propriedade
qualquer parametrizada em rela\c{c}\~ao a $i$.

\begin{align}
	\label{natindstep}SPS(P)&\dfn \bndA{n}{n\in\mathbb N}{\bndA{i\in\mathbb N}{\lelt 0in}{P.i} \limp P.n}\\
	\label{natind}SPI(P)&\dfn SPS(P) \limp \bndA{n}{n\in\mathbb N}{P.n}
\end{align}

\begin{ex}
	Prove que 
	$$SPS(P) = \bndA{n}{n\in\mathbb N}{P.n}$$
\end{ex}


Note que o princ\'{\i}pio de indu\c{c}\~ao sobre seq\"u\^encias
pode ser obtido do
princ\'{\i}pio de indu\c{c}\~ao sobre inteiros. Note tamb\'em que o
princ\'{\i}pio \ref{natind} permite induzir um princ\'{\i}pio de indu\c{c}\~ao 
forte sobre seq\"u\^encias.

				
As equa\coes\ a seguir definem o operador \emph{snoc} (denotado
\xsnocftor, em oposi\cao, logicamente ao operador \emph{cons}, \xconsftor).
\begin{align}
	\label{xnilsnoc}&\xsnoc \xnil a \llr.= \xcons a\xnil\\
	\label{xconsnoc}&\xsnoc{(\xcons ax)}b \llr.= \xcons a{(\xsnoc xb)}
\end{align}
As equa\coes\ a seguir definem um operador \emph{cat} (denotado \xcatftor) para
concatenar duas \sqn s.

\begin{align}
	\label{xnilxcat} &\xcat\xnil y = y\\
	\label{xconsxcat} & \xcat{(\xcons ax)}y =. \xcons a{(\xcat xy)}
\end{align}

Pertin\^encia em uma \sqn\ \ee\ definida a seguir.
\begin{align}
	\label{xnilin}&a\not\in\xnil\\
	\label{xconsin}& a\in (\xcons bx) =\lr. a=b\lor a\in x\\
\end{align}

O n\'umero de elementos de uma seq\"u\^encia \'e dado pelos axiomas a seguir.

\begin{align}
	\label{xnillen}&\xlen\xnil = 0\\
	\label{xconslen}&\xlen{\xcons ax}=1+\xlen x
\end{align}

Uma seq\"u\^encia\ \'e n\~ao decrescente quando a atende aos axiomas
\ref{incrxnil} e \ref{incrxcons}.

\begin{align}
	\label{incrxnil}&\xincr{\xnil.}\\
	\label{incrxcons}&\xincr{\xcons ax.} = \xincr {x.}\land
	  		\bndA{b}{b\in x}{a\le b}
\end{align}

\begin{ex}\label{minex}
	Dados os axiomas
	\begin{align}
		\label{minid}&min\, \xnil=+\infty\\
		\label{minseq}& min.\xcons ax = a\xbmin. min\,x
	\end{align}
	prove que
	\begin{enumerate}
		\item $\bndA{x}{x\in\sqntype A}{min\,x = \bnd{\xminftor}{a}{a\in x}{a}}$
		\item $\bndA{x}{x\in\sqntype A}{\bndA{a}{a\in x}{min\,x\le a}}$
	\end{enumerate}
\end{ex}

De agora em diante, e assumindo os resultados do exerc\'{\i}cio \ref{minex},
quando $x$ for uma seq\"u\^encia, valer\'a a seguinte nota\c{c}\~ao:
$$\xmin x=min\,x$$


\def\xdel#1#2{\ensuremath{del\,#1\,#2}}

\begin{ex}\label{mindel}
	Dados os axiomas 
	\begin{align}
		\label{delxnil}&\xdel a\xnil = \xnil\\
		\label{delxcons}& a = b \limp\lr.\xdel a{(\xcons bx)} = x\\
		\label{delxcons2}& a\neq b\limp\lr.\xdel a{(\xcons bx)} = \xcons
		b{(\xdel ax)}
	\end{align}
	Prove
	\begin{enumerate}
		\item $$\bndA{a,b}{a,b\in A\land b\in \xdel ax}{\xmin x\le b}$$
		\item $$\bndA{x\in\sqntype A}{\xlen x>0}{\xlen{\xdel{\xmin x}x}<\xlen x}$$
			\solbeg
			A prova pode \'e facilmente constru\'{\i}da por
			indu\c{c}\~ao (axioma \ref{seqind}), sendo a propriedade
			trivialmente verificada para seq\"u\^encias de tamanho
			zero e um. Para uma seq\"u\^encia $\xcons bx$, prova-se,
			considerando casos $b=\xmin{(\xcons bx)}$ e 
			$b\neq\xmin{(\xcons bx)}$:
			\begin{align*}
				&\xlen {\xdel {\xmin{(\xcons bx)}}{(\xcons bx)}}\\
				=&\jstop{\text{caso }
				b=\xmin{(\xcons bx)}
				\text{e axioma \ref{delxcons}}}\\
				&\xlen{x}\\
				<&\jsttx{aritm\'etica}\\
				&1+\xlen{x}\\
				=&\jsttx{axioma \ref{xconslen}}\\
				&\xlen{\xcons bx}\\
				=&\jstop{\text{caso }b\neq\xmin{.\xcons bx}
				\text{ e axioma \ref{delxcons2}}}\\
				&\xlen{\xcons b{\xdel{\xmin{(\xcons bx)}x}}}\\
				=&\jsttx{axioma \ref{xconslen}}\\
				&1+\xlen{\xdel{\xmin x} x}\\
				<&\jsttx{Hip\'otese de indu\c{c}\~ao}\\
				&1+\xlen x\\
				=&\jsttx{axioma \ref{xconslen}}\\
				&\xlen{\xcons bx}
			\end{align*}

			\solend
	\end{enumerate}
	\end{ex}

\begin{ex}
	Dados os axiomas
	\begin{align}
		\label{selxnil}&selSort \xnil=\xnil\\
		\label{selxcons}& x\neq\xnil\limp\lr.selSort\,x = 
		\xcons{(\xmin x)}{.selSort.\xdel{(\xmin x)}x}
	\end{align}
	Prove que
	$$\xincr{(selSort\,x)}$$
	\solbeg
	O teorema vale trivialmente quando $x=\xnil$. Usando indu\c{c}\~ao
	forte, define-se:
	$$R.i\dfn\bndA{x\in\sqntype A}{\xlen x=i}{\xincr{(selSort\,x)}}$$
	Usando o princ\'{\i}pio de indu\c{c}\~ao sobre $\mathbb N$, axioma 
	\ref{natind}, assume-se
	$$HI\dfn\bndA{i\in\mathbb N}{i<n}{R.i}$$
	prova-se, a seguir, que $R.n$.
	\begin{align*}
		&R.n\\
		=&\jsttp{assumiundo que }{\xlen x = n}\\
		&\xincr{(selSort\,x)}\\
		=&\jsttx{axioma \ref{selxcons}}\\
		&\xincr{(\xcons{\xmin x}{selSort.\xdel{\xmin x}x})}\\
		=&\jsttx{axioma \ref{incrxcons}}\\
		&\xincr{(selSort.\xdel{\xmin x}x)}\land
		\bndA{a}{a\in(selSort.\xdel{\xmin x}x)}{\xmin x\le a}\\
		=&\jsttx{HI e lema \ref{mindel}}\\ 
		&\ltrue\land
		\bndA{a}{a\in(selSort.\xdel{\xmin x}x)}{\xmin x\le a}\\
		=&\jsttx{\lrid (\land)}\\
		&\bndA{a}{a\in(selSort.xdel{\xmin x}x)}{\xmin x\le a}\\
		\lif&\jsttp{lema  a provar: }{\bndA{a}{a\in x}{a\in selSort x}}\\
		&\bndA{a}{a\in\xdel{\xmin x}x}{\xmin x\le a}\\
		=&\jsttx{exerc\'{\i}cio \ref{mindel}}\\
		&\ltrue
	\end{align*}
\end{ex}


\def\xrev#1{\ensuremath{rev\,#1}}
\begin{ex}
	Dados os axiomas
	\begin{align}
		\label{revxnil}&\xrev\xnil=\xnil\\
		\label{revxcons}&\xrev{(\xcons ax)}=\xsnoc {(\xrev x)}a
	\end{align}
	prove que
	\begin{enumerate}
		\item $\xrev{.\xcat xy}=\xcat{(\xrev y)}{(\xrev x)}$
		\item $\xrev{.\xcat x{\xcat yz}}=\xcat{\xrev z.}{.\xcat{\xrev y}{.\xrev x}}$
		\item $\xrev{(\xsnoc xa)} =\lr. \xcons a{.\xrev x}$
	\end{enumerate}
\end{ex}

\def\xpref#1#2{\ensuremath{ispref(#1,#2)}}
\begin{ex}
	Considere os axiomas:
	\begin{align}
		\label{xnilispref}&\xpref\xnil x\\
		\label{prefnotxnil}&\neg\xpref{\xcons ax}\xnil\\
		\label{pref}&\xpref{\xcons ax}{\xcons by}=\lr.a=b\land\xpref xy
	\end{align}
	Prove que
	$$\xpref xy = \bndE{z}{z\in\sqntype a}{y = \xcat xz}$$
\end{ex}

\section{\'Arvore bin\'aria de pesquisa}

Os axiomas a seguir definem uma \bintree\ sobre um
conjunto (tipo de dados) $A$:
\begin{align}
	\label{nullnd}& \xnullnd\in\bint{A}\\
	\label{binnd}& x,y\in\bint{A}\land a\in A\limp \xbinnd
	xay\in\bint{A}\\
	&\text{Fecho universal sobre }\ref{nullnd},\ref{binnd}
\end{align}

A altura de uma \tree\ \'e dada pelos axiomas a seguir:
\begin{align}
	\label{nullndheight}&\xhgt\xnullnd = 0\\
	\label{binndheight}&\xhgt\xbinnd xay = 1+.{(\xhgt x)}\xmax{(\xhgt y)}
\end{align}

Os axiomas a seguir estabelecem o conceito de pertin\^encia em \bintree.
\begin{align}
	\label{nulndin}& a\not\in\xnullnd\\
	\label{binndin}& a\in\xbinnd xby = a\in x\lor a=b\lor a\in y
\end{align}

O princ\'{\i}pio de indu\c{c}\~ao para \tree s bin\'arias estabelece uma
indu\c{c}\~ao sobre altura da \tree. Sua defini\c{c}\~ao baseia-se no
princ\'{\i}pio de indu\c{c}\~ao sobre $\mathbb N$, o conjunto dos inteiros n\~ao 
negativos. 
O axioma de indu\c{c}\~ao sobre \tree s bin\'arias \'e obtido de
\ref{natind} substituindo $P.i$ por uma propriedade $R$ que se objetiva provar
sobre \'arvores de altura $i$.
\begin{align}
	\label{bintp}&BINTP(R,i)\dfn\bndA{x\in\bint A}{\xhgt x=i}{R.x}\\
	\label{bintind} &\bndA{x}{x\in\bint A}{R.x} \quad =\\
	&\bndA{n}{n\in\mathbb N}{\bndA{i\in\mathbb N}{\lelt 0in}{BINTP(R,i)} \limp BINTP(R,n)} \nonumber
\end{align}

\begin{ex}
	Prove que o axioma \ref{bintind} estabelece que, para provar que uma
	propriedade $R$ vale para qualquer \tree\ bin\'aria, basta provar que:
	\begin{itemize}
		\item $R$ vale para a \tree\ vazia;
		\item o fato de que $R$ vale para qualquer \tree\ de altura 
			menor do que 
			$k$, implica que $R$ vale para qualquer \tree\ de altura
			$k$, onde $k$ \'e qualquer inteiro positivo.
	\end{itemize}
\end{ex}

As condi\c{c}\~oes de ordena\c{c}\~ao de uma \bintree\ s\~ao definidas a
seguir.
\begin{align}
	\label{nullndord}\xincr{(\xnullnd)}\\
	\label{binndord}\xincr{\xbinnd xay} =&\xincr{x}\\
		&\land\xincr{y}\nonumber\\
		&\land\bndA{b}{b\in x}{b<a}\nonumber\\
		&\land\bndA{b}{b\in y}{b>a}\nonumber
\end{align}

\def\xbinins#1#2{\ensuremath{#1\rightsquigarrow#2}}
\begin{ex}
	Assumindo que $x$ e $y$ s\~ao \tree s bin\'arias, e dados os axiomas 
	\begin{align}
		\label{nullndins}&\xbinins a\xnullnd=\xbinnd \xnullnd a\xnullnd\\
		\label{ltbinndins}&a<b\limp\lr.\xbinins a\xbinnd xby = 
		 	\xbinnd{\xbinins ax}by\\
		\label{eqbinndins}&a=b\limp\lr.\xbinins a\xbinnd xby = 
		 	\xbinnd xby\\
		\label{gtbinndins}&a>b\limp\lr.\xbinins a\xbinnd xby = 
		 	\xbinnd xb{\xbinins ay}
	\end{align}
	Prove:
	\begin{enumerate}
		\item $\xincr{(x)}\limp\lr. b\in\xbinins ax =\lr. a=b\lor b\in x$
		\item $\xincr{x.}\limp\xincr{(\xbinins ax)}$
	\end{enumerate}
\end{ex}

\begin{ex}
	Assumindo que $x$ e $y$ s\~ao \tree s bin\'arias, e dados os axiomas
	\begin{align}
		\label{minextnd}&\xmin\xbinnd\xnullnd ay = a\\
		\label{mininnd} &\xmin\xbinnd xay = \xmin x\\
		\label{delnullnd}&\xdel a\xnullnd=\xnullnd\\
		\label{dellftnull}&a=b\limp\lr.\xdel a\xbinnd\xnullnd by = y\\
		\label{delreplft}&a=b\land x\neq\xnullnd
		        \limp\lr.\xdel a\xbinnd xby = 
			\xbinnd{\xdel{(\xmax\! x)}x}{\xmax\! x}{y}\\
		\label{dellft}&a<b\limp\lr.\xdel a\xbinnd xby = 
			\xbinnd{\xdel ax}by\\
		\label{delrgt}&a>b\limp\lr.\xdel a\xbinnd xby = 
			\xbinnd xb{\xdel ay}\\
	\end{align}
	Prove
	\begin{enumerate}
		\item $\xincr{(x)}\limp\xincr{(\xdel ax)}$
		\item $a\in\xdel bx=\lr. a\neq b\land a\in x$
	\end{enumerate}
\end{ex}

\section{Altera\c{c}\~oes}\label{altersec}
Esta lista sobreu as seguintes alter\c{c}\~oes desde a vers\~ao do dia
29/11/04:

\begin{itemize}
	\item Princ\'{\i}pio de indu\c{c}\~ao sobre $\mathbb{N}$ foi transferido 
		para a se\c{c}\~ao \ref{seqssec} para facilitar algumas provas
		sobre seq\"u\^encias.
	\item Antigo exerc\'{\i}cio $7$ foi movido para tamb\'em com
		indu\c{c}\~ao sobre naturais: \'e agora exerc\'{\i}cio 2.
	\item Exerc\'{\i}cio sobre rela\c{c}\~ao entre $min$ e $(\xmin)$,
		antigo exerc\'{\i}cio $2$, foi corrigido.
	\item Os seguintes exerc\'{\i}cios est\~ao solucionados: primeiro 
		exerc\'{\i}cio sobre quantificadores e prova de 
		corre\c{c}\~ao da ordena\c{c}\~ao produzida
		pelo $selSort$. 
	\item Corrigido o exerc\'{\i}cio \ref{mindel}.
\end{itemize}

% as linhas abaixo sao usadas para gerar instrucoes para bibtex
\bibliographystyle{amsplain}
\bibliography{abbrev,formal,maths}



\end{document}

