Skip to content
Snippets Groups Projects
Unverified Commit 9c4f6134 authored by Florea Andrei's avatar Florea Andrei :slight_smile:
Browse files

2

parent a81877de
No related branches found
No related tags found
No related merge requests found
% !TeX spellcheck = <none>
\documentclass[french]{article}
\usepackage{amsfonts}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{translator}
\usepackage{graphicx}
\usepackage[svgnames]{xcolor}
\usepackage{lscape}
\usepackage{tablefootnote}
\usepackage{hyperref}
......@@ -28,10 +30,19 @@
\maketitle
\tableofcontents
\listoffigures
\section{Vue globale de Polymalys-py}
\section{Polymarp: Domaine abstrait}
Le domaine abstrait est composé d'un domaine numérique relationnel, d'un \textit{mapping} de registres et d'un \textit{mapping} d'addresses.
\subsection{Domaine numérique relationel}
L'objectif de ce module est d'avoir une interface modulaire avec les librairies de manipulation de domaines numériques. Pour ce faire, on définit des classes abstraites dans \verb*|numerical.py|, pour lesquelles on créera des implémentation pour chaque librairie souhaitée.
\begin{figure}[h]
\centering
\resizebox{\textwidth}{!}{
......@@ -143,7 +154,7 @@
+ equals(other): bool
}
\umlclass[type=abstract, y=-28]{ApronNumericalWrapper}{}{
+ new\_var() \\
+ new\_var(ident: int): ApronVar \\
- npiv(): Set[PolyVar] \\
- linexpr(var, basis): List[ApronConstant] \\
\umlstatic{- \_get\_basis(dom1, dom2): Set[PolyVar]} \\
......@@ -157,7 +168,7 @@
\umlinherit{ApronNumericalWrapper}{PolyNumericalWrapper}
\umlclass[type=abstract, x=7, y=-22]{ApronPoly}{}{
\umlstatic{+ bottom()} \\
\umlstatic{+ bottom()}
}
\umlclass[x=7, y=-28]{ApronPolyWrapper}{}{}
......@@ -172,7 +183,57 @@
\end{tikzpicture}
}
\caption{Hiérarchie des classes de l'interface mathématique et de son implémentation utilisant APRON}
\caption[Schéma UML de l'interface mathématique]{Hiérarchie des classes de l'interface mathématique et de son implémentation utilisant APRON}
\end{figure}
\subsection{Mappings}
Les \textit{mappings} sont définis dans \verb*|mappings.py|. Ils implémentent le \textit{mapping} de registres \( R \mapsto \mathcal{V}\) et le \textit{mapping} d'adresses \( \left(\mathcal{V} \times \mathbb{N} \times \mathcal{V} \right) \mapsto \mathcal{V} \cup \left(\mathcal{V} \times \mathcal{V} \right) \)
\begin{figure}[h]
\centering
\resizebox{\textwidth}{!}{
\begin{tikzpicture}%[show background grid]
\umlsimpleclass[x=8, y=-10]{PolyVar}
\begin{umlpackage}{mappings}
\umlclass[type=interface, x=-2]{MappingMixin}{}{
+ \_\_contains\_\_(other): bool
}
\umlclass[x=-4, y=-4]{RegisterMapping}{}{
+ replace(old, new)
}
\umlclass[y=-4]{LoopMapping}{}{
+ replace(old, new)
}
\umlclass[x=8, y=-5]{Avatar}{}{}
\umlclass[x=0, y = -7]{SLP}{
+ base: PolyVar \\
+ step: int or None \\
+ count: PolyVar
}{
+ last(): PolyExpr
}
\umluniassoc[mult2=2, pos2=0.9]{Avatar}{PolyVar}
\umlassoc[geometry=-|-, weight=0.8, name=assoc]{SLP}{Avatar}
\umlassoc[geometry=-|-, weight=0.8]{SLP}{PolyVar}
\umlassocclass[x=4, y=-4]{AddressMapping}{assoc-1}{}{
+ replace(old, new)
}
\umlsimpleclass[x=2.2, text=DarkGreen]{dict}
\umlinherit{RegisterMapping}{dict}
\umlinherit{LoopMapping}{dict}
\umlinherit{AddressMapping}{dict}
\umlimpl{RegisterMapping}{MappingMixin}
\umlimpl{LoopMapping}{MappingMixin}
\umlimpl{AddressMapping}{MappingMixin}
\end{umlpackage}
\end{tikzpicture}
}
\caption[Schéma UML des mappings]{Hiérarchies des classes de mappings}
\end{figure}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment