%\RequirePackage{atbegshi}
\documentclass[french]{beamer}
\usepackage{etex}

\usepackage[beamer,utf8x]{preambuleTrm}



\usepackage{iwona}


\mode<presentation>
{
  %\usetheme{Bergen}%Montpellier}
  % or ...Frankfurt, 
  \usetheme[secheader]{Madrid}

  \setbeamercovered{highly dynamic}
  % or whatever (possibly just delete it)
  \usefonttheme{progressbar}
  \useoutertheme{progressbar}
  %\useinnertheme{progressbar}
  \progressbaroptions{% titlepage=normal,
    imagename=/home/moi/Photos/Maths/monoid
}
}

\usepackage{elephantbird}


%\usepackage[french,vlined,boxed]{algorithm2e}
\usepackage{bookmark,multido}
%\usepackage{xlop}

\ifpdf \DeclareGraphicsRule{*}{mps}{*}{} \fi
\usepackage{tikz}
\usetikzlibrary{automata,fit,trees,matrix,arrows,decorations.pathmorphing,shapes,arrows,chains,positioning,intersections,backgrounds,calc,through,mindmap,shadows,patterns}
\newcommand{\myunit}{1.1cm}
\usepackage{tkz-graph}
\usepackage{circuitikz}
\hypersetup{pdfpagemode=FullScreen}

\usepackage[detect-all]{siunitx}

\usepackage{caption}
\captionsetup{labelformat=empty,font=footnotesize}

\usepackage{scalefnt}

%\usepackage{multimedia}
% \usepackage{cclicenses}
% \usepackage{cclicence}
\setbeamertemplate{theorems}[numbered]

\usepackage[square]{daedale}
\bibliographystyle{cyclope}


\usepackage{algo}

\renewcommand{\algocommentfont}{\tiny\ttfamily\itshape}


\newtheorem{exercice}{Exercice}


\setlength{\columnseprule}{0pt}

%\setlength{\parskip}{0pt}


\graphicspath{{/home/moi/IUT/Figures/}{/home/moi/VISA_III/figures_visa/}{/home/moi/Lycee/TDmaple/2006_7/}{/home/moi/Figures/Arbres_Graphes/}{/home/moi/Figures/FigSTI/}{/home/moi/Figures/FigMaple/}{/home/moi/Photos/Maths/}{/home/moi/Photos/Tehessin/}{/home/moi/Figures/FigSTI/}{/home/moi/Figures/FigSeconde/}{/home/moi/Lycee/Informatique/XCAS/2008_9/}{/home/moi/Lycee/TDmaple/2008_9/}{/home/moi/IUT/Thierry/Conversions/}{/home/moi/Photos/informathix/}{/home/moi/Lycee/Informatique/PafAlgo/}{/home/moi/Figures/figuresAlice/}{/home/moi/Figures/FigSeconde/}{/home/moi/Biocam/robot/}{/home/moi/Biocam/CoursIni3d/}{/home/moi/Biocam/central/figures/}{/home/moi/Biocam/central/}{/home/moi/IUT/INFO2/Images/}{/home/moi/IUT/INFO2/2011_12/graphes/}{/home/moi/IUT/INFO1/CM1/}{/home/moi/Figures/figuresTS/}{/home/moi/Photos/Tehessin/}{/home/moi/Figures/FigSTI/}{/home/moi/Alice/figures3/}{/home/moi/Alice/figures3/newcourbes/}{/home/moi/Alice/figures/}{/home/moi/Figures/figuresAlice/}{/home/moi/Photos/Maths/}{/home/moi/Lycee/TS/}{/home/moi/Lycee/TS/2009_10/}{/home/moi/Figures/FigMaple/}{/home/moi/Figures/figuresTS/newcourbes/}{/home/moi/Figures/FigEspace/}{/home/moi/PROG/HASKELL/FLOAT/}{/home/moi/PREPA/IPT/2014_15/Poly/}{/home/moi/PROG/PYTHON/Matrix/}}




\setcounter{tocdepth}{2} %\setcounter{page}{0}


\newcommand{\triangleup}{\Delta}

















\begin{document}


\title[]% (optional, use only with long paper titles)
{Programmation et algèbre}

\subtitle{INFO1 - semaines 45 à 48}

\author[] % (optional, use only with lots of authors)
{Guillaume CONNAN }
% - Give the names in the same order as the appear in the paper.
% - Use the inst{?} command only if the authors have different
%   affiliation.

\institute{\textsc{Iut} de Nantes - Dpt d'informatique}% (optional, but mostly needed)

\logo{\includegraphics[width=0.1\textwidth]{logo_iut}}

%\logo{\includegraphics[scale=0.15]{big_connan}}

\date[] % (optional, should be abbreviation of conference name)
{novembre 2015}
% - Either use conference name or its abbreviation.
% - Not really informative to the audience, more for people (including
%   yourself) who are reading the slides online

\subject{ }


\beamerdefaultoverlayspecification{<+->}

% \AtBeginSubsubsection[]
% {
%   \begin{frame}<beamer>
%     \frametitle{Sommaire}
%  {\scriptsize
% \begin{multicols}{2}
%     \tableofcontents[currentsection,currentsubsection]
%        \end{multicols}
% }

%   \end{frame}
% }




\AtBeginSubsection[]
{\scriptsize
  \begin{frame}<beamer>
    \frametitle{Sommaire}
 {\tiny
\begin{multicols}{2}
    \tableofcontents[currentsection,currentsubsection]
       \end{multicols}
}

  \end{frame}
}





\AtBeginSection[]
{
  \begin{frame}<beamer>
    \frametitle{Sommaire}
 {\scriptsize
\begin{multicols}{2}
    \tableofcontents[currentsection]
       \end{multicols}
}

  \end{frame}
}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command: 

\beamerdefaultoverlayspecification{<+->}




\newcommand{\TR}{\mathcal{T}}


\begin{frame}
%\ThisCenterWallPaper{1}{logoiremBigInv}
 \Large \titlepage 
\end{frame}

\begin{frame}
 \frametitle{Sommaire}
{\scriptsize
\begin{multicols}{2} 
 \tableofcontents
\end{multicols}
}

 
 \end{frame}

\normalsize

\section{Monoïdes}


\begin{frame}[fragile]
%\transdissolve


  \begin{itemize}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{1 + 1 = 2} 
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{"Doctor " + "Who" = "Doctor Who"}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{panier.ajoute_contenu(autre_panier) = gros_panier} 
  \end{itemize}

\pause

Parlons types

\pause

\begin{itemize}
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{int + int = int}
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{string + string = string} 
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{panier.ajoute_contenu(panier) = panier} 

 

\end{itemize}

\end{frame}


\begin{frame}[fragile]\frametitle{Premier commandemant: STABILITÉ}
%  \transdissolve
  \begin{center}
    UN MONOÏDE PREND DU TYPE T ET RETOURNE DU TYPE T
  \end{center}

\pause

  \begin{itemize}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{3 / 2 = 1.5} 
\pause ( \mintinline[fontsize=\small,fontfamily=txtt]{python}{int / int =   float}) \pause \faux

  \item     \mintinline[fontsize=\small,fontfamily=txtt]{python}{True and False = False}     \pause
    ( \mintinline[fontsize=\small,fontfamily=txtt]{python}{Bool and Bool = Bool} ) \pause \vrai


\item  \mintinline[fontsize=\small,fontfamily=txtt]{python}{[1, 2] + [3, 4] = [1, 2, 3, 4]}  \pause
  ( \mintinline[fontsize=\small,fontfamily=txtt]{python}{list + list = list} ) \pause \vrai

\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{3 == 4 = False} \pause 
( \mintinline[fontsize=\small,fontfamily=txtt]{python}{int == int = Bool} )
  \pause \faux

%\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{len "Dalek" = 5} \pause (\mintinline[fontsize=\small,fontfamily=txtt]{python}{len(string) = int} 



  \end{itemize}


\end{frame}


\begin{frame}[fragile]\frametitle{Pourquoi la stabilité?}
%\transdissolve


Pour pouvoir enchaîner des actions \pause (... composer des fonctions ! )

\begin{itemize}
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{connexion = host + ":" + port + "/" + chemin} 
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{email.To(['doctor@who.future']).From('The@Master.vilain')}
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{if Dalek or The Master or Wheeping Angel : run }

\end{itemize}

  
\end{frame}





\begin{frame}
  \begin{definition}[Loi de composition interne]
    Soit $E$ un ensemble.  Une loi de composition interne définie  sur E est une
    \textbf{fonction totale} de $E\otimes E$ dans $E$.

    On dit alors que le couple $(E,loi)$ a une structure de \textbf{magma}.
  \end{definition}

\pause

\begin{definition}[Stabilité]
  Un ensemble $E$ est \textbf{stable} par une loi $\dagger$ si, et seulement si:

$$\forall(x,y)\cdot\bigl((x,y)\in E \otimes E ⟹ x\dagger y \in E\bigr) $$
\end{definition}

\end{frame}







\begin{frame}[fragile]\frametitle{Deuxième commandement: NEUTRALITÉ}
  
  \begin{itemize}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{x + 0 = x}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{x * 1 = x} 
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{b and True = b}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{b or False = b}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{"Dalek" + "" = "Dalek"}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{panier.ajoute_contenu(panier_vide) = panier} 
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{f o (lambda x: x) = f} 
  \end{itemize}




\end{frame}




\begin{frame}[fragile]
  \begin{definition}[Élement neutre]
    Soit $(E,\dagger)$ un magma. Un élément neutre de  $(E,\dagger)$ est un élément $e$ vérifiant:

$$\forall x\cdot(x\dagger e=e\dagger x=x)$$
  \end{definition}

\pause

Vous aurez bien noté le $\forall$...
\end{frame}



\begin{frame}[fragile]\frametitle{Pourquoi la neutralité?}
  Exemple: calculer la somme des éléments d'une liste.

\pause


\begin{pythoncode}
def somme(xs) :
    som_actuelle = NEUTRE
    for x in xs :
        som_actuelle = som_actuelle + x
    return som_actuelle
\end{pythoncode}



\end{frame}






\begin{frame}[fragile]\frametitle{Pourquoi la neutralité?}
  Exemple: calculer le produit des éléments d'une liste.

\pause


\begin{pythoncode}
def produit(xs) :
    prod_actuel = NEUTRE
    for x in xs :
        prod_actuel = prod_actuel * x
    return prod_actuel
\end{pythoncode}



\end{frame}




\begin{frame}[fragile]\frametitle{Pourquoi la neutralité?}
  Exemple: étant donnée une liste de booléens, sont-ils tous vrais?

\pause

\begin{pythoncode}
def tous_vrais(bs) :
    bool_actuel = NEUTRE
    for b in bs :
        bool_actuel = bool_actuel and b
    return bool_actuel  
\end{pythoncode}



\end{frame}








\begin{frame}[fragile]\frametitle{Pourquoi la neutralité?}
  Exemple: étant donnée une liste de caractères, concaténez-les en une unique chaîne.

\pause

\begin{pythoncode}
def concat(cs) :
    chaine_actuelle = NEUTRE
    for c in cs :
        chaine_actuelle = chaine_actuelle + c
    return chaine_actuelle
\end{pythoncode}



\end{frame}



\begin{frame}[fragile]
\transdissolve  
%\begin{figure}
\begin{center}
  \includegraphics[height=0.84\textheight]{conan}
\end{center}
%\end{figure}

\end{frame}








\begin{frame}\frametitle{Troisième commandement: ASSOCIATIVITÉ}
  \begin{itemize}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{1 + (2 + 3) = (1 + 2) + 3}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{1 * (2 * 3) = (1 * 2) * 3}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{True and (False and True) = (True and False) and True}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{"Crush "+("your "+"ennemies") = ("Crush "+"your ")+"ennemies"} 
\item \mintinline[fontsize=\small,fontfamily=txtt]{python}{3 - (2 - 1) != (3 - 2) - 1} \pause \faux 
  \end{itemize}
\end{frame}



\begin{frame}
\transdissolve
  \begin{definition}[Monoïde]
    Soit $(E,\dagger)$ un magma. Si de plus  ce magma admet un élément neutre et
    si  la loi  $\dagger$  est associative  sur $E$  alors  $(E,\dagger)$ a  une
    structure de \textbf{monoïde}.
  \end{definition}
\end{frame}




\begin{frame}\frametitle{Pourquoi l'associativité?}
  \begin{itemize}
  \item Diviser pour régner
  \item Algorithme incrémental
  \item Parallélisation
  \end{itemize}
\end{frame}



\begin{frame}[fragile]
  \transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.84\textheight]{batAsso}
\end{center}
%\end{figure}

\end{frame}




\begin{frame}\frametitle{Batman t'explique l'associativité}
  Tu veux tuer cent méchants:
  \begin{itemize}
  \item je les tue l'un après l'autre
  \item j'en tue 10 aujourd'hui, 10 demain, et 80 après-demain
  \item avec Robin, Conan et sept autres copains on en tue dix chacun 
  \end{itemize}
\end{frame}





\begin{frame}[fragile]
  \transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.84\textheight]{lebowskiMono}
\end{center}
%\end{figure}

\end{frame}



\begin{frame}
  \begin{enumerate}
  \item Stabilité: un type T donne un type T
  \item Neutre: une sorte de rien
  \item Associativité: je groupe comme je veux
  \end{enumerate}
\end{frame}






\begin{frame}[fragile]
  \transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.84\textheight]{devil}
\end{center}
%\end{figure}

\end{frame}



\section{Map-Reduce}


\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[width=0.8\linewidth]{buzzMap}
\end{center}
%\end{figure}
\end{frame}


\begin{frame}
\transdissolve
La réduction, on a déjà vu...
\end{frame}



\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[width=\linewidth]{reduction}
\end{center}
%\end{figure}
\end{frame}








\begin{frame}[fragile]
 \transdissolve

\begin{pythoncode}
def tous_vrais(bs : list bool) -> bool :
    bool_actuel = NEUTRE
    for b in bs :
        bool_actuel = bool_actuel and b
    return bool_actuel  
\end{pythoncode}



\end{frame}








\begin{frame}[fragile]
 \transdissolve
\begin{pythoncode}
def concat(cs : list car ) -> car :
    chaine_actuelle = NEUTRE
    for c in cs :
        chaine_actuelle = chaine_actuelle + c
    return chaine_actuelle
\end{pythoncode}



\end{frame}












\begin{frame}[fragile]
\transdissolve
\begin{pythoncode}
def reduit(collection : list t) -> t :
    reduc_actuelle = NEUTRE
    for element in collection :
        reduc_actuelle = reduc_actuelle LOI element
    return reduc_actuelle
\end{pythoncode}

\end{frame}


\begin{frame}[fragile]
\transdissolve
\begin{pythoncode}
reduce(LOI, collection, NEUTRE)
\end{pythoncode}
\end{frame}

\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.9\textheight]{courses}
\end{center}
%\end{figure}
  


\end{frame}














\begin{frame}[fragile]
  \begin{description}
  \item[Mes courses:] \mintinline[fontsize=\small,fontfamily=txtt]{python}{panier = [1, 12, 99, 75, 10]}
  \item[Commandement 1] $1 + 12 + 99 + 75 + 10$ est un entier.
  \item[Commandement 2] 0 est le neutre
  \item[Commandement 3] $((((1 + 12)+99)+75)+10)$ \pause peut-être différemment...
  \end{description}
\end{frame}

\begin{frame}
  Le calcul peut être effectué par exemple...

\pause 

... comme ceci : $((1+12) + (99 + 75 ))+(10 +0)$

\pause

... ou comme cela:

\begin{description}
\item[serveur 1] $1+12$
\item[serveur 2] $99+75$
\item [serveur 3] $10+0$
\end{description}

\end{frame}


\begin{frame}[fragile]
  Oui mais en fait je n'ai pas un panier de prix mais un panier de produits:

\pause

\mintinline[fontsize=\small,fontfamily=txtt]{python}{panier = [pizza, coca, finger, ketchup, casquette]}

\pause

On a une fonction \mintinline[fontsize=\small,fontfamily=txtt]{python}{prix(produit) -> int} 

\pause

Laissons la magie opérer

\end{frame}




\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.9\textheight]{maporum}
\end{center}
%\end{figure}
  


\end{frame}



\begin{frame}[fragile]
  \mintinline[fontsize=\small,fontfamily=txtt]{python}{map}    va    transformer
  chaque objet de notre panier en un prix.

\pause

 \mintinline[fontsize=\small,fontfamily=txtt]{python}{map} \textbf{ nous permet de transférer nos objets minables dans un monoïde}

\end{frame}






\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.9\textheight]{vador}
\end{center}
%\end{figure}
  


\end{frame}




\begin{frame}[fragile]
  \begin{itemize}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{panier = [pizza, biere, finger, ketchup, casquette]}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{prix_panier = map(prix, panier)}
  \item \mintinline[fontsize=\small,fontfamily=txtt]{python}{total = reduce(lambda x, y: x + y, prix_panier, 0)} 


  \end{itemize}
\end{frame}






\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.9\textheight]{moise}
\end{center}
%\end{figure}
  


\end{frame}



\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.9\textheight]{mapreduce}
\end{center}
%\end{figure}
  


\end{frame}





\section{Groupe}









\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.75\textheight]{back}
\end{center}
%\end{figure}
  


\end{frame}


\begin{frame}
  On voudrait parfois revenir en arrière.

\pause

Par exemple on a rajouté un glaçon dans son whiskey...vite il faut l'enlever.

\end{frame}


\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.7\textheight]{whiskey}
\end{center}
%\end{figure}

\end{frame}


\begin{frame}
  On a rajouté 2 à un entier:

$$x⟶ x+2$$

\pause

Oups, enlevons-le

$$x+2 ⟶ x+2 + (-2)$$

\pause

\end{frame}



\begin{frame}


\begin{definition}[Élément inversible]
  Soit $x$ un élément de E. Il est inversible
  (ou symétrisable) par $\star$ si, et seulement si, 

$$(\exists y)(x\star y =  y \star x = e_\star)$$
\end{definition}

\pause

Pouvez-vous démontrer que si $x$ admet un symétrique, alors ce symétrique est unique?


\pause


On note souvent ce symétrique $x^{-1_\star}$ ou bien ${-}_\star x$.



\end{frame}




\begin{frame}[fragile]
  Des fois ça n'est pas possible...

\pause


On a rajouté une chaîne à une autre:

\pause

\mintinline[fontsize=\small,fontfamily=txtt]{python}{s = "Use the " + "Force"} 

\pause

Oups, je voulais mettre \mintinline[fontsize=\small,fontfamily=txtt]{python}{Monoid} à la place de \mintinline[fontsize=\small,fontfamily=txtt]{python}{Force}...

\pause

C'est trop tard: je ne peux rien concaténer à \texttt{s} pour revenir à \mintinline[fontsize=\small,fontfamily=txtt]{python}{"Use the"}. 
 
\end{frame}









\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.7\textheight]{inversible}
\end{center}
%\end{figure}

\end{frame}



\begin{frame}
  \transdissolve

\begin{definition}[Groupe]
Un groupe est un monoïde tel que tout élément est inversible.
\end{definition}

\end{frame}







\begin{frame}
\transdissolve
%\begin{figure}
\begin{center}
  \includegraphics[height=0.7\textheight]{galois}
\end{center}
%\end{figure}

\end{frame}




\subsection{Le groupe (Z/nZ,+)}





\begin{frame}
  \begin{definition}[Congruence des entiers]
Soit $n$ un entier naturel non nul.

Deux  éléments $a$  et  $b$ du  groupe  $(\bbz,+)$ sont  \textbf{congrus
  modulo}  $n$ si,  et  seulement si,  ils  ont le  même  reste dans  la
division par $n$.
On note $$a\equiv b\ (\modu n)$$

ou

$$a\equiv_n b$$
 et  on lit \og \textit{a est congru à b
  modulo n}\fg{}.
\end{definition}


\pause


\begin{quote}
  {\it
\og Well, LISP seems to work okay now, modulo that GC bug.\fg{}

\pause

\og I feel fine today modulo a slight headache.\fg{}}

\pause


\begin{flushright}
  in \og The New Hacker's Dictionnary\fg{}\\
\href{http://outpost9.com/reference/jargon/jargon\_28.html\#SEC35}{http://outpost9.com/reference/jargon/jargon\_28.html\#SEC35}
\end{flushright}
\end{quote}


\end{frame}





\begin{frame}

\begin{theorem}[Division euclidienne]
Soit $a$ un entier relatif et $b$ un entier naturel non
nul.

Il existe un unique couple d'entiers $(q,r)$ tels que
$$a=bq+r\quad\text{avec}\quad 0 \leqslant r<b$$

Déterminer $q$ et $r$, c'est effectuer la division euclidienne de
$a$ par $b$.

On appelle $a$ le dividende, $b$ le diviseur, $q$ le quotient et
$r$ le reste.
\end{theorem}
\end{frame}


\multido{\i=1+1}{7}{%
  \begin{frame}
%\begin{figure}
\begin{center}
  \includegraphics[width=0.8\linewidth]{modulo\i.jpg}
\end{center}
%\end{figure}
  \end{frame}
}




 \begin{frame}
%\begin{figure}
\begin{center}
  \includegraphics[height=0.9\textheight]{cm1.jpg}
\end{center}
%\end{figure}
  \end{frame}



  \begin{frame}
    On note $\ofr{\bbz}{n\bbz}$ l'ensemble des classes modulo $n$.

\pause

Par exemple, on notera:

$$\ofr{\bbz}{8\bbz}=\bigl\{\overline{0}^8,\overline{1}^8,\overline{2}^8,\overline{3}^8,\overline{4}^8,\overline{5}^8,\overline{6}^8,\overline{7}^8\bigr\}$$



  \end{frame}



\begin{frame}
  \begin{alertblock}{Attention!}
     Notez  bien   que  $\overline{0}^8$,   $\overline{1}^8$,  etc.  sont   des  ensembles
  d'entiers!...
  \end{alertblock}

\pause


Ainsi $\overline{0}^8=\bigl\{...,-16,-8,0,8,16,24,32,...\bigr\}$


\end{frame}





\begin{frame}
  \begin{exercice}
    Écrivez  par  exemple  les  lois  d'addition  et  de  multiplication  de
$\ofr{\Z}{7\Z}$ et $\ofr{\Z}{8\Z}$: des remarques?

\pause



Est-ce           que          $\left(\ofr{\Z}{n\Z},+\right)$          et
$\left(\ofr{\Z}{n\Z},\cdot\right)$ sont des groupes? 


  \end{exercice}
\end{frame}





\begin{frame} \frametitle{PGCD}
  
\begin{definition}[PGCD]
  Soit $a$ et $b$ deux entiers. On appelle PGCD de $a$ et $b$ et on note $a\wedge b$ l'entier défini de la manière suivante:
\begin{itemize}
\item $0\wedge 0=0$
\item Si $a$ et $b$ ne sont pas simultanément nuls, $a\wedge b$ est le plus grand entier naturel qui divise simultanément $a$ et $b$.
\end{itemize}
\end{definition}


\pause

$$\DR(a)\cap\DR(b)$$


\end{frame}







\begin{frame} \frametitle{Algorithme d'Euclide I}

\begin{algo}
\FUNC{euclide}{%
\pfarg{a, b}{entiers}}{entier}
\IF{b = 0}
\RETURN{a}
\ELSE
\RETURN{euclide(b,rem(a,b))}
\ENDIF
\end{algo}
  
\end{frame}







\begin{frame} \frametitle{Algorithme d'Euclide II}

\begin{center}
\begin{tabular}{|c||c|c|c||c|}
\hline $k$ & $u_k$ & $v_k$ & $r_k$ & $q_k$ \\ 
\hhline{=====} 0 & 1 & 0 &$r_0=a$& /  \\ 
\hline 1 & 0 & 1 &$r_1=b$& $q_1$  \\
\hline 2 & $u_0-u_1q_1$ & $v_0-v_1q_1$ &$r_2=r_0-r_1q_1$& $q_2$  \\ 
\hline 3 & $u_1-u_2q_2$ & $v_1-v_2q_2$ & $r_3=r_1-r_2q_2$&$q_3$  \\ 
\hline $\vdots$ &  &  & $\vdots$ & $\vdots$ \\ 
\hline $p-1$ &  &  & $r_{p-1}=a\wedge b$ & $q_{p-1}$ \\ 
\hline $p$ &  &  &   $r_p=0$ &\\
\hline 
\end{tabular} 
\end{center}
  
\end{frame}



\begin{frame}[fragile]
 

\begin{center}
\begin{tabular}{|c||c|c|c||c|l}
\hhline{-----} $k$ & $u_k$ & $v_k$ & $r_k$ & $q_k$ &  \\ 
\hhline{=====} 0 & \Colorbox{blue!50!black}{ 1} & \Colorbox{blue!50!black}{ 0} & \Colorbox{blue!50!black}{ 19} & / & $L_0$ \\ 
\hhline{-----} 1 & \Colorbox{blue!50!black}{ 0} & \Colorbox{blue!50!black}{ 1} &\Colorbox{blue!50!black}{ 15} & \Colorbox{yellow!50!black}{1} & $L_1$ \\ 
\hhline{-----} 2 & 1 & $-1$ & 4 & 3 & $L_2\leftarrow L_0-\Colorbox{yellow!50!black}{1}\times L_1$ \\ 
\hhline{-----} 3 & $-3$ & 4 & 3 & 1 & $L_3\leftarrow L_1-3\times L_2$ \\ 
\hhline{-----} 4 & 4 & $-5$ & 1 & 3 & $L_4\leftarrow L_2-1\times L_3$ \\ 
\hhline{-----} 5 &  &  & 0 &  & $L_5\leftarrow L_3-3\times L_4$ \\ 
\hhline{-----} 
\end{tabular} 
\end{center}
\end{frame}







\section{Anneaux et corps}

\subsection{Anneaux}

%
\begin{frame}
  \includegraphics[width=\linewidth]{lord_ring}
\end{frame}



%
\begin{frame}
  \begin{definition}[Anneau]
  Soit A un ensemble muni de deux lois $\boxdot$ et $\boxplus$. 

On dit que
$\langle A,\boxplus,\boxdot\rangle$ est un anneau si, et seulement si:
\begin{itemize}
\item $\langle A,\boxplus\rangle$ est un groupe commutatif;
\item $\boxdot$ est associative;
\item $\boxdot$ est distributive sur $\boxplus$.
\end{itemize}

\pause

Si   $\boxdot$   est  commutative,   alors  l'anneau   est  dit
\textit{commutatif}. 

\pause

Si  $\boxdot$  admet   un  élément  neutre,  l'anneau  est  dit
\textit{unitaire}. 

\pause

Les éléments d'un anneau unitaire qui admettent un symétrique par $\boxdot$
 sont dits  \textit{inversibles}. On note $A^\ast$ l'ensemble
des éléments 
inversibles de A.
\end{definition}

\end{frame}



\subsection{Corps}


%
\begin{frame}
  \begin{definition}[Corps]
Soit $\bbk$ un ensemble muni de deux LCI $\boxplus$ et $\boxdot$.
Le  triplet  $\langle  \bbk,\boxplus,\boxdot\rangle$ possède  une  structure  de
\textbf{corps} si, et seulement si, 
\begin{itemize}
\item                       $\langle
  \bbk,\boxplus,\boxdot\rangle$    a
  une structure  d'anneau 
  unitaire;
\item                       $\langle
  \bbk\setminus\{e_\boxplus\},\boxdot\rangle$
  a une structure de groupe.
\end{itemize}
\end{definition}


\pause




Combien d'éléments a au minimum un corps?


\end{frame}



\begin{frame}
  Le corps  $\bbf_2$ \pause  ($\bbf$ comme  Field) \pause  est $\ofr{\bbz}{2\bbz}$
  muni de deux opérations: lesquelles à votre avis?


\end{frame}




\section{Les Complexes}

\begin{frame}
  
%\begin{figure}
\begin{center}
  \includegraphics[width=\linewidth]{i}
\end{center}
%\end{figure}

\end{frame}


\begin{frame}[fragile]
  $\bbc$ comme...\pause Corps des Complexes.

\pause

Quel est l'inverse de $x+iy$ pour la multiplication?

\pause


\begin{pythoncode}
In [68]: 1/(1+1j)
Out[68]: (0.5-0.5j)  
\end{pythoncode}



\end{frame}






%
\begin{frame}
  
\begin{definition}[Morphisme]

Soit  $\langle  E,\oplus,\otimes\rangle $  et
$\langle F,\dagger,\star\rangle $ deux corps et $\varphi$ une fonction totale de $E$
dans $F$.
On dit que $\varphi$ est un morphisme de corps de E dans F si, et seulement si:

$$\bigl(\forall    x\bigr)\bigl(\forall   y\bigr)\bigl(\varphi(x\oplus    y)   =
\varphi(x)\dagger \varphi(y)\bigr)$$

$$\bigl(\forall x\bigr)\bigl(\forall y\bigr)\bigl(\varphi(x\otimes y) = \varphi(x)\star \varphi(y)\bigr)$$
\end{definition}


\pause

Si $\varphi$ est bijective, on parle d'ISOMORPHISME
\end{frame}


%

\begin{frame}
Imaginez un  isomorphisme entre $\bbc$  et $\bbr^2$, l'ensemble  des coordonnées
des points de l'écran...

\pause

Quel est le plus simple à manipuler?
\end{frame}



\begin{frame}[fragile]
\begin{pythoncode}
with open(hpath, 'w') as h:
        h.writelines(
            ['<!DOCTYPE html>\n'
            ,'<head>\n'
            ,'<title>plot</title>\n'
            ,'</head>\n'
            ,'<body>\n'
            ,'<svg height="720" width=920 xmlns="http://www.w3.org/2000/svg">\n'
            ,'<line x1="0" y1="360" x2="720" y2="360"'
             ,'style="stroke:rgb(150,150,150);stroke-width:2"/>\n'
            ,'<line x1="360" y1="0" x2="360" y2="720"'
            ,'style="stroke:rgb(150,150,150);stroke-width:2"/>\n'])
        for pt in L:
            if isinstance(pt, Number):
                x,y = pt.real, pt.imag
            else:
                if isinstance(pt, tuple) or isinstance(pt, list):
                    x,y = pt
                else:
                    raise ValueError
            h.writelines(['<circle cx="%d" cy="%d" r="%d" fill="white"/>\n'
                          % (origin[0]+scalar*x,origin[1]-scalar*y,dot_size)])
        h.writelines(['</svg>\n</body>\n</html>'])
\end{pythoncode}
\end{frame}


\begin{frame}[fragile]
\transdissolve
  Merci à \href{https://www.linkedin.com/in/philipsdoctor}{Philip Doctor}
\end{frame}
\end{document}
%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
