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

1

parents
Branches
No related tags found
No related merge requests found
% !TeX spellcheck = <none>
\documentclass[french]{article}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{translator}
\usepackage{graphicx}
\usepackage{lscape}
\usepackage{tablefootnote}
\usepackage{hyperref}
\usepackage{tikz-uml}
\usetikzlibrary {arrows.meta}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=blue,
citecolor = black,
urlcolor=blue,
pdftitle={Compte-rendu intermédiaire de stage}
}
\title{Polymalys-py \\ \small Rapport technique}
\author{FLOREA Andrei}
\begin{document}
\maketitle
\tableofcontents
\section{Vue globale de Polymalys-py}
\begin{figure}[h]
\centering
\resizebox{\textwidth}{!}{
\begin{tikzpicture}%[show background grid]
\begin{umlpackage}{numerical}
\umlclass[type=abstract]{PolyConstant}{
+ value: int
}{
\umlvirt{+ to\_expr(): PolyExpr}
}
\umlclass[type=abstract, y = -3]{PolyVar}{
+ ident
}{
\umlvirt{+ to\_expr(): PolyExpr}
}
\umlclass[type=abstract, y = -6]{PolyExpr}{
}{
\umlvirt{+ get\_vars(): Set[PolyVar]}
}
\umlclass[type=abstract, y=-9]{PolyExprHelper}{
+ op: Operations \\
+ left: PolyExprHelper, PolyVar, PolyConstant \\
+ right: PolyExprHelper, PolyVar, PolyConstant
}{
+ get\_vars(): Set[PolyVar]
}
\umlclass[type=enumeration, y=-9, x=-7]{Operations}{
CONST \\ VAR \\ ADD \\ SUB \\ NEG \\ MUL \\ AND
}{}
\umlinherit{PolyExprHelper}{PolyExpr}
\umlnest{PolyExprHelper}{Operations}
\umlclass[type=abstract, y=-16]{PolyConstraint}{}{}
\umlclass[type=abstract, y=-13]{PolyConstraintHelper}{
+ expr: PolyExpr \\
+ op: Operations2 \\
+ const: PolyConstant
}{}
\umlclass[type=enumeration, y=-13, x=-7]{Operations2}{
EQ \\ LEQ \\ GEQ
}{}
\umlinherit{PolyConstraintHelper}{PolyConstraint}
\umlnest{PolyConstraintHelper}{Operations2}
\umluniassoc[mult2=1]{PolyConstraintHelper}{PolyExprHelper}
\umlclass[type=abstract, x=-2, y=-22]{PolyNumericalDomain}{}{
\umlvirt{\umlstatic{+ bottom(): PolyNumericalDomain}} \\
\umlvirt{+ add\_constraint(constraint: PolyConstraint)} \\
\umlvirt{+ is\_top(): bool} \\
\umlvirt{+ is\_bottom(): bool} \\
\umlvirt{+ maximize(expression): int or None} \\
\umlvirt{+ minimize(expression): int or None} \\
\umlvirt{+ join(other): PolyNumericalDomain} \\
\umlvirt{+ widening(other): PolyNumericalDomain} \\
\umlvirt{+ intersection(other): PolyNumericalDomain} \\
\umlvirt{+ substitute(old, new): PolyNumericalDomain} \\
\umlvirt{+ projection(var\_set): PolyNumericalDomain} \\
\umlvirt{+ includes(other: PolyNumericalDomain): bool} \\
+ get\_vars(): Set[PolyVar]
}
\umlclass[type=abstract, x=-2, y=-28]{PolyNumericalWrapper}{}{
\umlvirt{+ new\_var(value: int): PolyVar} \\
+ fold(repl1, repl2, var): PolyNumericalWrapper \\
+ expand(repl, var1, var2): PolyNumericalWrapper \\
\umlvirt{\umlstatic{+ match\_var(var1, var2, dom1, dom2): bool}} \\
\umlvirt{+ copy(p, var\_set): PolyNumericalWrapper} \\
\umlvirt{+ bac(var: PolyVar, avatar): PolyNumericalWrapper}
}
\umluniassoc[geometry=-|, mult2=*, pos2=1.8]{PolyNumericalDomain}{PolyConstraint}
\umlinherit{PolyNumericalWrapper}{PolyNumericalDomain}
\end{umlpackage}
\begin{umlpackage}[x=8]{apron}
\umlclass{ApronConstant}{}{
+ to\_expr()
}
\umlclass[y=-3]{ApronVar}{
}{
+ to\_expr()
}
\umlclass[y = -9, x=2]{ApronExpr}{}{}
\umlunicompo[geometry=|-]{ApronExpr}{ApronVar}
\umlunicompo[geometry=|-]{ApronExpr}{ApronConstant}
\umlclass[y=-13]{ApronConstraint}{}{}
\umlinherit{ApronConstraint}{PolyConstraintHelper}
\umlclass[type=abstract, y=-22]{ApronNumericalDomain}{
+ env: Set[PolyVar]
}{
+ get\_vars(): Set[PolyVar] \\
+ add\_constraint(cons) \\
+ is\_top(): bool \\
+ is\_bottom(): bool \\
+ maximize(expression): int or None \\
+ minimize(expression): int or None \\
+ join(other) \\
+ wideining(other) \\
+ intersection(other) \\
+ substitute(old, new) \\
+ projection(var\_set) \\
+ includes(other) \\
+ equals(other): bool
}
\umlclass[type=abstract, y=-28]{ApronNumericalWrapper}{}{
+ new\_var() \\
- npiv(): Set[PolyVar] \\
- linexpr(var, basis): List[ApronConstant] \\
\umlstatic{- \_get\_basis(dom1, dom2): Set[PolyVar]} \\
\umlstatic{+ match\_var(var1, var2, dom1, dom2)} \\
+ copy(p, var\_set) \\
+ bac(var, avatar)
}
\umlinherit{ApronNumericalDomain}{PolyNumericalDomain}
\umlinherit{ApronNumericalWrapper}{ApronNumericalDomain}
\umlinherit{ApronNumericalWrapper}{PolyNumericalWrapper}
\umlclass[type=abstract, x=7, y=-22]{ApronPoly}{}{
\umlstatic{+ bottom()} \\
}
\umlclass[x=7, y=-28]{ApronPolyWrapper}{}{}
\umlinherit{ApronPoly}{ApronNumericalDomain}
\umlinherit{ApronPolyWrapper}{ApronPoly}
\umlinherit{ApronPolyWrapper}{ApronNumericalWrapper}
\end{umlpackage}
\umlinherit{ApronConstant}{PolyConstant}
\umlinherit{ApronVar}{PolyVar}
\umlinherit{ApronExpr}{PolyExprHelper}
\end{tikzpicture}
}
\caption{Hiérarchie des classes de l'interface mathématique et de son implémentation utilisant APRON}
\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