\usepackage[top=1.5cm,bottom=1.5cm,left=1.5cm,right=1.5cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{stmaryrd}
\usepackage{mathrsfs} % per mathscr
\usepackage{graphicx} % ruota freccia per le azioni
\usepackage{marvosym} % per il \Lightning
\usepackage{array}
\usepackage{faktor} % per gli insiemi quoziente
\usepackage[colorlinks=false]{hyperref}
\usepackage{xparse} % per nuovi comandi con tanti input opzionali
\usepackage{relsize} % per \mathlarger
\usepackage{tikz-cd}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{cancel}
\usepackage{enumerate}
\usepackage{soul}
\usepackage{nicefrac}
\usepackage{longtable}
\usepackage{pdflscape}
\usepackage{mathtools}
\usepackage{lmodern}

%\usepackage{tikz-3dplot}
%\usetikzlibrary{arrows.meta}
%\usetikzlibrary{intersections}

\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\Int}{int}

\renewcommand{\vec}[1]{{\underline{#1}}}

\newcommand{\basis}{\mathcal{B}}

\newtheorem*{warn}{{\fontencoding{U}\fontfamily{futs}\selectfont\char 49\relax} \; Attenzione}

\newtheoremstyle{customth}
{\topsep}{\topsep}
{\itshape}{}{\bfseries}{.}{\newline}{}

\newtheoremstyle{customdef}
{\topsep}{\topsep}
{\normalfont}{}{\bfseries}{.}{\newline}{}

\newtheoremstyle{customrem}
{\topsep}{\topsep}
{\normalfont}{}{\itshape}{.}{\newline}{}

\theoremstyle{customth}
\newtheorem{theorem}{Teorema}[chapter]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{corollary}[theorem]{Corollario}
\newtheorem{proposition}[theorem]{Proposizione}
\newtheorem{fact}[theorem]{Fatto}
\newtheorem{application}[theorem]{Applicazione}
\theoremstyle{customrem}
\newtheorem{remark}[theorem]{Osservazione\,}
\theoremstyle{customdef}
\newtheorem{definition}[theorem]{Definizione}
\newtheorem{notation}[theorem]{Notazione}
\newtheorem{example}[theorem]{Esempio}

\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
    \pushQED{\qed}%
    \normalfont \topsep6\p@\@plus6\p@\relax
    \trivlist
    \item[\hskip\labelsep
                \itshape
                #1\@addpunct{.}]\mbox{}\\*
}{%
    \popQED\endtrivlist\@endpefalse
}
\makeatother

%============ Simboli standard =================
\newcommand{\NN}{\mathbb{N}}
\newcommand{\ZZ}{\mathbb{Z}}
\newcommand{\RR}{\mathbb{R}}
\newcommand{\QQ}{\mathbb{Q}}
\newcommand{\CC}{\mathbb{C}}
\newcommand{\cc}{\mathcal{C}}
\newcommand{\TT}{\mathbb{T}}

\newcommand{\I}{\mathrm{I}}
\newcommand{\II}{\mathrm{II}}

\DeclareMathOperator{\SO}{SO}
\DeclareMathOperator{\rk}{rk}

\DeclareMathOperator{\vol}{vol}
\DeclareMathOperator{\crit}{crit}

\DeclareMathOperator{\Span}{span}

\newcommand{\defeq}{\overset{\mathrm{def}}{=}}

\DeclareMathOperator{\im}{im}
\DeclareMathOperator{\id}{id}
\DeclareMathOperator{\sgn}{sgn}
\DeclareMathOperator{\shape}{S}

\newcommand{\eps}{\varepsilon}
\renewcommand{\phi}{\varphi}

\newcommand{\der}[2]{\frac{\mathop{}\!\textnormal{\slshape d} #1}{\mathop{}\!\textnormal{\slshape d} #2}}
\newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}

\newcommand{\dertime}[2]{\left. \der{}{t} #1 \right|_{#2}}

\newcommand*\dif{\mathop{}\!\textnormal{\slshape d}}

\let\oldemptyset\emptyset
\let\emptyset\varnothing

\newcommand{\dA}{\dif{A}}
\newcommand{\dx}{\dif{x}}
\newcommand{\dy}{\dif{y}}
\newcommand{\du}{\dif{u}}
\newcommand{\dv}{\dif{v}}
\newcommand{\ds}{\dif{s}}
\newcommand{\dt}{\dif{t}}

%\setcounter{secnumdepth}{1}

\newcommand{\restr}[2]{
    #1\arrowvert_{#2}
}

\newcommand{\inv}{^{-1}}

\newcommand{\abs}[1]{\left\lvert #1 \right\rvert}
\newcommand{\norm}[1]{\left\lVert #1 \right\rVert}

\NeedsTeXFormat{LaTeX2e}
%\ProvidesPackage{quiver}[2021/01/11 quiver]

% `tikz-cd` is necessary to draw commutative diagrams.
\RequirePackage{tikz-cd}
% `amssymb` is necessary for `\lrcorner` and `\ulcorner`.
\RequirePackage{amssymb}
% `calc` is necessary to draw curved arrows.
\usetikzlibrary{calc}
% `pathmorphing` is necessary to draw squiggly arrows.
\usetikzlibrary{decorations.pathmorphing}

% A TikZ style for curved arrows of a fixed height, due to AndréC.
\tikzset{curve/.style={settings={#1},to path={(\tikztostart)
                    .. controls ($(\tikztostart)!\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
                    and ($(\tikztostart)!1-\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
                    .. (\tikztotarget)\tikztonodes}},
    settings/.code={\tikzset{quiver/.cd,#1}
            \def\pv##1{\pgfkeysvalueof{/tikz/quiver/##1}}},
    quiver/.cd,pos/.initial=0.35,height/.initial=0}

% TikZ arrowhead/tail styles.
\tikzset{tail reversed/.code={\pgfsetarrowsstart{tikzcd to}}}
\tikzset{2tail/.code={\pgfsetarrowsstart{Implies[reversed]}}}
\tikzset{2tail reversed/.code={\pgfsetarrowsstart{Implies}}}
% TikZ arrow styles.
\tikzset{no body/.style={/tikz/dash pattern=on 0 off 1mm}}
