<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>On the Properties of Partial Completeness in Abstract Interpretation (Short Paper)⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marco Campion</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mila Dalla Preda</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Roberto Giacobazzi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Verona</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <kwd-group>
        <kwd>eol&gt;Abstract Interpretation</kwd>
        <kwd>Program Analysis</kwd>
        <kwd>Computability</kwd>
        <kwd>Partial Completeness</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        represents the ideal situation where no false alarms are produced. Completeness, however, is a
very rare condition to be satisfied in practice, therefore, static program analysis needs to, in
some way, deal with incompleteness. Moreover, the experience tells us that there are results that
are “more incomplete”, i.e., less precise, than others, and this depends upon the way the program
is written and the way the abstract interpreter is implemented [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. As an example, consider the
following program
 ::= while  &gt; 1 do  :=  − 2
if  = 1 then  := 10
if  = 2 then  := 100
and the set of values {2, 4}. Clearly J K{2, 4} = {0}. However, when  is analyzed by an
abstract interpreter J KInt (e.g., see [6, Chapter 4.5]) which considers abstract arithmetical
operators as the best correct approximation (bca for short), defined on the abstract domain of
intervals Int ≜ {[, ] | ,  ∈ Z ∪ {−∞ , +∞},  ≤ } ∪ {⊥Int} [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] or defined as the bca for Int,
namely, J KIbncat ≜  Int ∘ J K ∘  Int ∘  Int, then it may exhibit diferent levels of imprecision . Recall
that Int abstracts sets of integer values and it contains all intervals [, ] such that ,  ∈ Z±∞
where Z±∞ ≜ Z ∪ {−∞ , +∞} , and  ≤ . So, for the input of  we get  Int({2, 4}) = [
        <xref ref-type="bibr" rid="ref2 ref4">2, 4</xref>
        ],
while for the output we obtain the single point  Int(J K{2, 4}) = [0, 0]. Then, for the two
mentioned analysis of  we get J KIbncat{2, 4} = [
        <xref ref-type="bibr" rid="ref10">0, 10</xref>
        ] and J KInt Int({2, 4}) = [0, 100]. Note
the three diferent interval properties obtained by the concrete, bca and abstract evaluations of
 over Int with input {2, 4}: [0, 0] ≤ Int [
        <xref ref-type="bibr" rid="ref10">0, 10</xref>
        ] ≤ Int [0, 100]. These discrepancies are what we
want to measure.
      </p>
      <p>To this end, we consider a weaker form of metric function that is made specific for the
elements of an abstract domain, namely, it is compatible with the underlying ordering relation
≤ , hence taking into account the presence of incomparable elements. This distance function
incorporates both the qualitative comparison given by the partial order and a quantitative
comparison (Section 2). By exploiting this idea, we can introduce the notion of -partial
completeness of an abstract domain  with respect to a given program and a given (set of) input
values (Section 3). A partially complete abstract interpretation allows some false-alarms to be
reported, but their number is bounded. In this case, the imprecision of the abstract interpreter is
bounded by , namely, the distance between the property represented by the abstraction of the
concrete semantics and the result of the abstract interpretation on the given input, is at most
. Given a tolerance  of imprecision and a set of inputs , we want to answer the following
questions (Section 4): Can we implement a program analyzer such that all programs having  as
input are -partial complete? Can we prove if our program analysis has or not a bounded level of
imprecision?</p>
    </sec>
    <sec id="sec-2">
      <title>2. Quasi-metrics on Abstract Domains</title>
      <p>
        Our goal is to derive the bound of imprecision of an abstract interpreter with respect to a
given measure over the abstract domain. For this reason, we need a metric to compare the
elements of the abstract domain according to their relative degree of precision. We refer to the
weaker notion of quasi-metric introduced in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] on a non-empty set . This is a metric function
 :  ×  → Q≥ 0 whose symmetry property may not hold. A set endowed with a quasi-metric
is called quasi-metric space. Let () be the set of all abstract domains  abstracting some set
of concrete properties  and having ordering relation ≤  2.
      </p>
      <p>Definition 2.1 (Quasi-metrics -compatible). We say that the distance function   : ×  →
N≥∞0 ∪ {⊥} is a quasi-metric -compatible for  ∈ () if for all 1, 2, 3 ∈ , it satisfies the
following axioms:
(i) 1 = 2 ⇔  (1, 2) = 0
(ii) 1 ≤  2 ⇔  (1, 2) ̸= ⊥
(iii) 1 ≤  2 ≤  3 ⇒  (1, 3) ≤  (1, 2) +  (2, 3)
(iv) ∀1, 2 ∈ ,  ∈ N≥ 0 the predicate  (1, 2) ≤  is decidable.</p>
      <p>We allow the quasi-metric between two uncomparable elements to be ⊥, which represents an
undefined distance. An abstract domain  ∈ () endowed with a quasi-metric -compatible
 , forms an abstract quasi-metric space, denoted by  ≜ (,  ). We use A() to refer to the
set of all abstract quasi-metric spaces, and write  ∈ A().</p>
      <p>
        As an example of quasi-metric -compatible, we define the weighted path-length  w as the
minimum weighted path, w.r.t. a weight function w, of intermediate elements between two
comparable elements of an abstract domain . Here  w considers the lattice of  as a weighted
directed graph where each edge corresponds to two adjacent abstract elements , , that is,
 ≤   and there are no elements  ∈  such that  ≤   ≤  . So for example,  Iwnt over the
intervals abstraction having w(· , · ) = 1, i.e., setting to 1 the weight of each edge of Int, returns
9 between [0, 0] and [
        <xref ref-type="bibr" rid="ref10">0, 10</xref>
        ] meaning that there are exactly 9 more elements in [
        <xref ref-type="bibr" rid="ref10">0, 10</xref>
        ] respect to
[0, 0], while  Iwnt([0, 0], [0, +∞]) = ∞ and  Iwnt([0, 0], [
        <xref ref-type="bibr" rid="ref1 ref10">1, 10</xref>
        ]) = ⊥ because [0, 0] ̸≤ Int [
        <xref ref-type="bibr" rid="ref1 ref10">1, 10</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Partial Completeness</title>
      <p>
        Standard completeness in program analysis3, e.g., see [
        <xref ref-type="bibr" rid="ref13 ref2 ref3">2, 3, 13</xref>
        ], means that no false alarms are
returned by analyzing the program with an abstract interpreter on any possible input state.
Local completeness, instead, is a recently introduced property [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] that requires completeness
only with respect to specific inputs. An -partially complete program analyzer allows some false
alarms to be reported over a considered (set of) input, but their amount is bounded by a constant
 which is determined according to a quasi-metric which is compatible with the abstract domain
used by the analysis. Formally, given a program  ∈ Programs, a constant bound  ∈ N≥ 0, a
non-empty set of stores  ∈ ℘(S) and  ∈ A(℘(S)), we say that  is -partially complete for
 in  if  (J K) ≤  J K (), where  ≤   if  (, ) ≤ . We now have all the
ingredients to introduce the notion of -partial completeness class of programs.
2We consider abstract domains in () that are either recursive or trivial [
        <xref ref-type="bibr" rid="ref1 ref9">9, 1</xref>
        ].
3In some topics concerning abstract interpretation, completeness is typically recurrent, e.g., in comparative
semantics [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ] or formal languages [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Here we are considering only the field of program analysis.
Definition 3.1 (-Partial completeness class). The partial completeness class of an abstract
quasi-metric space  ∈ A(℘(S)), a constant  ∈ N≥ 0 and a non-empty set of inputs  ∈ ℘(S),
denoted C(, , ) ⊆ Programs, is defined as:
      </p>
      <p>C(, , ) ≜ { ∈ Programs |  (J K) ≤  J K ()}.</p>
      <p>
        Similarly to the completeness case [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], for every , the -partial completeness class is infinite
and non-extensional. It is infinite because for all  ∈ N≥ 0 and  ∈ ℘(S), C() ⊆ C(, , )
and C() is infinite, where C() denotes the (global) completeness class of programs. It is
also non-extensional because there always exist programs  and  such that:  is partially
complete for , J K = JK, and  is not partially complete for .
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Recursive Properties of Partial Complete Programs</title>
      <p>
        It is well known that for trivial abstractions (i.e., either the identity or an abstraction having
one element only) the corresponding completeness class turns out to be the whole set of
programs [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Moreover, for all non-trivial abstractions in (℘(S)), its completeness class is
strictly contained in Programs [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. In this section, we study the counterpart of these results
for the case of partial completeness. It turns out that the quasi-metric -compatible chosen for
measuring the imprecision of the analysis, plays an important rule here in order to determine
the recursive properties of C(, , ) and, therefore, of the considered program analysis.
We first consider the simplest case of abstract quasi-metric spaces of stores  ∈ A(℘(S))
satisfying the property of having a limited imprecision by  ∈ N≥ 0, i.e., abstractions such that
∀ ∈  :  (⊥, ) ≤ . These include, for instance, the case of finite height lattices with the
weighted path-length quasi-metric—complete lattices which are both ACC and DCC.
Theorem 4.1. If  ∈ A(℘(S)) has limited imprecision, then we have for all  ∈ ℘(S): ∃ ∈
N≥ 0. C(, , ) = Programs .
      </p>
      <p>
        For example, the Sign ≜ {Z, − , 0, +, ∅} abstraction [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] measured with  Swign having w(· , · ) =
1, has limited imprecision because by for any  ≥ 3, the partial completeness class turns
out C((Sign,  Swign), , ) = Programs. The diference with respect to the case of standard
completeness class C() is that, thanks to the possibility of admitting an upper margin to
imprecision (i.e., possible false alarms), there always exists a class of partial completeness with
respect to a given bound which includes all programs.
      </p>
      <p>Conversely, an abstract quasi-metric space of stores  ∈ A(℘(S)) has unlimited imprecision
when: ∀ ∈ N≥ 0, ∃ ∈ .  (⊥, ) &gt; . The abstract quasi-metric space (Int,  Iwnt) is such
an example.</p>
      <p>Theorem 4.2. Let  ∈ A(℘(S)) be any abstract quasi-metric space of stores with unlimited
imprecision   and  ∈ ℘(S). Then, the following equivalence holds: ∃ ∈ N≥ 0. C(, , ) =
Programs ⇔  = ℘(S).</p>
      <p>Informally, if we consider a non-trivial abstract quasi-metric space that has unlimited imprecision
and an input , then independently of how we set a threshold  of false alarms acceptance,
there always exists a program  for which the abstract analysis over  with input , is not
-partially complete, namely  ̸∈ C(, , ). By a straightforward padding argument, any
of these programs can be extended to an infinite set of programs for which the abstraction is
-partially incomplete. The class of -partial incomplete programs for  ∈ A(℘(S)) with input ,
is the complement set of C(, , ), formally: C(, , ) = { ∈ Programs |  (J K) ̸≤ 
J K ()}. Theorem 4.2 implies that any non-trivial abstract domain of stores endowed with
an unlimited imprecision  , has an infinite set of programs for which the abstract interpreter is
-partially incomplete. Conversely, if   has limited imprecision, then, trivially, we can always
ifnd a certain level of tolerance that makes the analysis -partially complete for all programs.</p>
      <p>We now study the computational limits of the class of partially complete and incomplete
programs. In this case, the topological structure of  in terms of ascending chains, is fundamental.
We say that an abstract quasi-metric space of stores  ∈ A(℘(S)) is -trivial for some  ∈ N≥ 0
if C(, , ) = Programs. The following theorem shows that the class of programs C(, , )
turns out to be recursively enumerable (r.e.) whenever the abstract domain of stores  satisfies
the Ascending Chain Condition (ACC).</p>
      <p>Theorem 4.3. If  ∈ A(℘(S)) is ACC, then for every  ∈ ℘(S) and  ∈ N≥ 0, C(, , ) is r.e..
Sketch. Run a dovetail algorithm constructing the set  ≜ ⨆︀∈N{ (J K)} starting from
 = ⊥, where  ∈  is an enumeration of . If, at some point of the iterates, there exists  ∈ 
such that J K ̸= ∅,  =  ⊔  (J K) and  (, J K ()) ≤ , then the algorithm
terminates. If  ∈ C(, , ) then the convergence of the above algorithms is guaranteed by
the ACC of .</p>
      <p>The following theorem states that both C(, , ) and C(, , ) are non-r.e. sets when  is
not -trivial and not ACC.</p>
      <p>Theorem 4.4. If  ∈ A(℘(S)) is not -trivial, then C(, , ) is non-r.e.. Moreover, if  is also
not ACC, then C(, , ) is non-r.e..</p>
      <p>As a straightforward corollary, the local completeness class C(, ) for  satisfying the ACC
property is r.e., while non-r.e. for non-ACC abstractions. Furthermore, if  is not trivial, then
C(, ) is non-r.e. even if  is ACC. Let us notice that Theorems 4.3 and 4.4 provide a further
insight into the structure of C(, , ) and its complement class C(, , ). These theorems
prove that, given any non-ACC abstract quasi-metric space of stores , whenever we limit the
expected imprecision of our analysis to a bound  of possible false alarms w.r.t. an input , we
cannot build a procedure that enumerates all programs satisfying that bound or that do not
respect that bound, unless the abstract domain is -trivial. Therefore, deciding whether a static
program analysis can produce or cannot produce some bounded set of false alarms is in general
impossible, unless  satisfies the ACC. In this last case, we can at least answer “yes” if the
static analysis has a bounded imprecision over a program with a specific input. The -partial
completeness and incompleteness class of an abstraction are therefore a non-trivial property of
programs for which no recursively enumerable procedure may exist which is able to enumerate
all of their elements.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Campion</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Dalla</given-names>
            <surname>Preda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <article-title>Partial (in)completeness in abstract interpretation: Limiting the imprecision in program analysis</article-title>
          ,
          <source>Proc. ACM Program. Lang</source>
          .
          <volume>6</volume>
          (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .1145/3498721.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <article-title>Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints, in: Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages</article-title>
          , ACM Press,
          <year>1977</year>
          , pp.
          <fpage>238</fpage>
          -
          <lpage>252</lpage>
          . doi:
          <volume>10</volume>
          .1145/512950.512973.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <article-title>Systematic design of program analysis frameworks, in: Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages</article-title>
          , ACM Press,
          <year>1979</year>
          , pp.
          <fpage>269</fpage>
          -
          <lpage>282</lpage>
          . doi:
          <volume>10</volume>
          .1145/567752.567778.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          , Principles of Abstract Interpretation, The MIT Press, Cambridge, Mass.,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>G. Winskel,</surname>
          </string-name>
          <article-title>The formal semantics of programming languages: an introduction</article-title>
          , MIT press,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Miné</surname>
          </string-name>
          ,
          <article-title>Tutorial on static inference of numeric invariants by abstract interpretation, Foundations and Trends in Programming Languages 4 (</article-title>
          <year>2017</year>
          )
          <fpage>120</fpage>
          -
          <lpage>372</lpage>
          . URL: https://doi. org/10.1561/2500000034. doi:
          <volume>10</volume>
          .1561/2500000034.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bruni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Gori</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Garcia-Contreras</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Pavlovic</surname>
          </string-name>
          ,
          <article-title>Abstract extensionality: on the properties of incomplete abstract interpretations</article-title>
          ,
          <source>PACMPL</source>
          <volume>4</volume>
          (
          <year>2020</year>
          )
          <volume>28</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>28</lpage>
          :
          <fpage>28</fpage>
          . doi:
          <volume>10</volume>
          .1145/3371096.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>W. A.</given-names>
            <surname>Wilson</surname>
          </string-name>
          ,
          <article-title>On quasi-metric spaces</article-title>
          ,
          <source>American Journal of Mathematics</source>
          <volume>53</volume>
          (
          <year>1931</year>
          )
          <fpage>675</fpage>
          -
          <lpage>684</lpage>
          . doi:
          <volume>10</volume>
          .2307/2371174.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ranzato</surname>
          </string-name>
          ,
          <article-title>Program analysis is harder than verification: A computability perspective</article-title>
          , in: International Conference on Computer Aided Verification, Springer,
          <year>2018</year>
          , pp.
          <fpage>75</fpage>
          -
          <lpage>95</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -96142-
          <issue>2</issue>
          _
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <article-title>Inductive definitions, semantics and abstract interpretation</article-title>
          ,
          <source>in: Conference Record of the 19th ACM Symp. on Principles of Programming Languages (POPL '92)</source>
          , ACM Press,
          <year>1992</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>94</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <article-title>Compositional and inductive semantic definitions in fixpoint, equational, constraint, closure-condition, rule-based and game-theoretic form (Invited Paper)</article-title>
          , in: P. Wolper (Ed.),
          <source>Proc. of the 7th Internat. Conf. on Computer Aided Verification (CAV '95)</source>
          , volume
          <volume>939</volume>
          of Lecture Notes in Computer Science, Springer-Verlag,
          <year>1995</year>
          , pp.
          <fpage>293</fpage>
          -
          <lpage>308</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Campion</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Dalla</given-names>
            <surname>Preda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <article-title>Abstract interpretation of indexed grammars</article-title>
          ,
          <source>in: International Static Analysis Symposium</source>
          , Springer,
          <year>2019</year>
          , pp.
          <fpage>121</fpage>
          -
          <lpage>139</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>030</fpage>
          -32304-
          <issue>2</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ranzato</surname>
          </string-name>
          ,
          <string-name>
            <surname>F. Scozzari.</surname>
          </string-name>
          ,
          <article-title>Making abstract interpretation complete</article-title>
          ,
          <source>Journal of the ACM</source>
          <volume>47</volume>
          (
          <year>2000</year>
          )
          <fpage>361</fpage>
          -
          <lpage>416</lpage>
          . doi:
          <volume>10</volume>
          .1145/333979.333989.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bruni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Gori</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ranzato</surname>
          </string-name>
          ,
          <article-title>A logic for locally complete abstract interpretations</article-title>
          ,
          <source>in: Proc. 36th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS</source>
          <year>2021</year>
          ), IEEE Computer Society,
          <year>2021</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>13</lpage>
          . doi:
          <volume>10</volume>
          .1109/LICS52264.
          <year>2021</year>
          .
          <volume>9470608</volume>
          , distinguished paper.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>Giacobazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Logozzo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ranzato</surname>
          </string-name>
          ,
          <article-title>Analyzing program analyses</article-title>
          ,
          <source>in: Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL</source>
          <year>2015</year>
          , Mumbai, India, January
          <volume>15</volume>
          -
          <issue>17</issue>
          ,
          <year>2015</year>
          ,
          <year>2015</year>
          , pp.
          <fpage>261</fpage>
          -
          <lpage>273</lpage>
          . doi:
          <volume>10</volume>
          . 1145/2676726.2676987.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cousot</surname>
          </string-name>
          ,
          <article-title>Static determination of dynamic properties of programs</article-title>
          ,
          <source>in: Proceedings of the 2nd International Symposium on Programming</source>
          , Dunod, Paris,
          <year>1976</year>
          , pp.
          <fpage>106</fpage>
          -
          <lpage>130</lpage>
          . doi:
          <volume>10</volume>
          .1145/390019.808314.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>