Evaluation of the Implementation of an Abstract Interpretation - - PowerPoint PPT Presentation

evaluation of the implementation of an abstract
SMART_READER_LITE
LIVE PREVIEW

Evaluation of the Implementation of an Abstract Interpretation - - PowerPoint PPT Presentation

ICLP19 Las Cruces, September 22, 2019 Evaluation of the Implementation of an Abstract Interpretation Algorithm using Tabled CLP n Arias 1 , 2 Manuel Carro 1 , 2 Joaqu 1 IMDEA Software Institute, 2 Universidad Polit ecnica de Madrid


slide-1
SLIDE 1

Evaluation of the Implementation of an Abstract Interpretation Algorithm using Tabled CLP

ICLP’19 – Las Cruces, September 22, 2019

Joaqu´ ın Arias1,2 Manuel Carro1,2

1IMDEA Software Institute, 2Universidad Polit´

ecnica de Madrid

madrid institute for advanced studies in software development technologies

slide-2
SLIDE 2

1 / 16

www.software.imdea.org

Introduction

  • Abstract interpretation is a theory for the approximation of the semantics of programs.
  • PLAI is an efficient abstract interpreter for logic programs implemented in CiaoPP

.

  • Goal: improve the implementation of PLAI using Tabled CLP:
  • Reduce complexity and size.
  • Increase performance.

madrid institute for advanced studies in software development technologies

slide-3
SLIDE 3

1 / 16

www.software.imdea.org

Introduction

  • Abstract interpretation is a theory for the approximation of the semantics of programs.
  • PLAI is an efficient abstract interpreter for logic programs implemented in CiaoPP

.

  • Goal: improve the implementation of PLAI using Tabled CLP:
  • Reduce complexity and size.
  • Increase performance.

Main points

  • Tabling engine drives fixpoint.
  • Fair evaluation of tabling impact:
  • Preserve interfaces with rest of CiaoPP (abstract domains, etc).
  • Using abstract domains available in CiaoPP

.

  • Analysing benchmarks from the CiaoPP distribution.
  • Entailment and LUB computation through constraint interface.

madrid institute for advanced studies in software development technologies

slide-4
SLIDE 4

2 / 16

www.software.imdea.org

Related Work

  • Tabling and abstract interpretation implementations share underlying principles:
  • Extension Tables [Dietrich 1987] for tabling.
  • Memo Tables with Dependency Tracking [Warren et al. 1988] for abstract interpretation.

madrid institute for advanced studies in software development technologies

slide-5
SLIDE 5

2 / 16

www.software.imdea.org

Related Work

  • Tabling and abstract interpretation implementations share underlying principles:
  • Extension Tables [Dietrich 1987] for tabling.
  • Memo Tables with Dependency Tracking [Warren et al. 1988] for abstract interpretation.
  • Implementation of Abstract Interpreters using tabling:
  • Initial proposals, no implementation/performance details.

[Kanamori and Kawamura 1993; Warren 1999]

  • Some implementations used as benchmarks to compare tabling scheduling.

[Demoen and Sagonas 1998; Freire et al. 2001]

  • Advanced techniques (e.g., answer merging) to improve their implementation.

[Schrijvers et al. 2008; Chico de Guzm´ an et al. 2012; Swift and Warren 2010]

madrid institute for advanced studies in software development technologies

slide-6
SLIDE 6

2 / 16

www.software.imdea.org

Related Work

  • Tabling and abstract interpretation implementations share underlying principles:
  • Extension Tables [Dietrich 1987] for tabling.
  • Memo Tables with Dependency Tracking [Warren et al. 1988] for abstract interpretation.
  • Implementation of Abstract Interpreters using tabling:
  • Initial proposals, no implementation/performance details.

[Kanamori and Kawamura 1993; Warren 1999]

  • Some implementations used as benchmarks to compare tabling scheduling.

[Demoen and Sagonas 1998; Freire et al. 2001]

  • Advanced techniques (e.g., answer merging) to improve their implementation.

[Schrijvers et al. 2008; Chico de Guzm´ an et al. 2012; Swift and Warren 2010]

  • To the best of our knowledge, only one tabled implementation [Janssens and Sagonas 1998] evaluated against

non-tabled state-of-the-art Abs. Int. AMAI [Janssens et al. 1995] & PLAI [Muthukumar and Hermenegildo 1992].

  • Conclusion: ”PLAI is the most efficient”.

madrid institute for advanced studies in software development technologies

slide-7
SLIDE 7

3 / 16

www.software.imdea.org

Background

  • Mod(ular) TCLP

.

[PPDP’16 & TPLP’19].

  • Flexible, simple interface to use arbitrary constraint domains in tabled execution.
  • Three operations required: projection, entailment, application.
  • More particular calls (w.r.t. ⊑) suspend and reuse answers.

p(X), X #> 1 ⊑ p(X), X #> 0

  • More particular answers are discarded/removed.

X #= 2 ⊑ X #> 0 ∧ X #< 5 madrid institute for advanced studies in software development technologies

slide-8
SLIDE 8

3 / 16

www.software.imdea.org

Background

  • Mod(ular) TCLP

.

[PPDP’16 & TPLP’19].

  • Flexible, simple interface to use arbitrary constraint domains in tabled execution.
  • Three operations required: projection, entailment, application.
  • More particular calls (w.r.t. ⊑) suspend and reuse answers.

p(X), X #> 1 ⊑ p(X), X #> 0

  • More particular answers are discarded/removed.

X #= 2 ⊑ X #> 0 ∧ X #< 5

  • Aggregate-TCLP

.

[PADL ’19].

  • Incremental computation of join of elements in a lattice.

Related to [Swift and Warren 2010; Guo and Gupta 2008; Zhou et al. 2010].

  • Call entailment checking.

Detection of semantically equivalent calls ⇒ termination.

  • Implemented on top of Mod TCLP

. madrid institute for advanced studies in software development technologies

slide-9
SLIDE 9

4 / 16

www.software.imdea.org

Abstract Interpretation [Cousot and Cousot 1977; Bruynooghe 1991]

  • Analyzes a finite # of abstract executions:
  • An abstract substitution (denoted Xlist) approximates an infinite # of concrete substitutions.
  • It is defined on an abstract domain.
  • Given a clause of the form h :-

p1, ..., pm:

  • βentry h βexit

abstract entry and exit substitution of h.

  • λi pi λi+1

abstract call and success substitution of call pi.

βentryh :- λ1p1,λ2..., λmpm λm+1. βexit

  • PLAI has a domain-independent interface.
  • PLAI constructs a finite abstract tree top-down:
  • Start with the λcall for a query.
  • Follow top-down execution.
  • Fixpoint algorithm used to terminate on recursive calls.

madrid institute for advanced studies in software development technologies

slide-10
SLIDE 10

5 / 16

www.software.imdea.org

Construction of the Abstract Tree

λcall q1 λsuccess. βentry q :- λ1p1, λ2..., λmpm λm+1. βexit

... ...

β ′

entry q′ :- λ ′ 1p′

1, λ ′

2 ..., λ ′ mp′

m

λ ′

m+1. β ′ exit

⊔       

β ′′

exit

madrid institute for advanced studies in software development technologies

slide-11
SLIDE 11

5 / 16

www.software.imdea.org

Construction of the Abstract Tree

λcall q1 λsuccess. βentry q :- λ1p1, λ2..., λmpm λm+1. βexit

... ...

β ′

entry q′ :- λ ′ 1p′

1, λ ′

2 ..., λ ′ mp′

m

λ ′

m+1. β ′ exit

⊔       

β ′′

exit

madrid institute for advanced studies in software development technologies

slide-12
SLIDE 12

5 / 16

www.software.imdea.org

Construction of the Abstract Tree

It loops in presence of recursion.

λcall q1 βentry q :- λ1p1, λ2..., λmpm λm+1. βexit

... ...

β ′

entry q′ :- λ ′ 1 ..., λcall q1 (loop)

madrid institute for advanced studies in software development technologies

slide-13
SLIDE 13

6 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm

λcall q1

madrid institute for advanced studies in software development technologies

slide-14
SLIDE 14

6 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm

λcall q1 βentry q :- λ1p1,λ2 ..., λmpm λm+1. βexit

non-recursive clauses

... ⊔

  • βaprox.

madrid institute for advanced studies in software development technologies

slide-15
SLIDE 15

6 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm

λcall q1 βentry q :- λ1p1,λ2 ..., λmpm λm+1. βexit

non-recursive clauses

... ⊔

  • βaprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′

  • aprox. p′

m

λ ′

m+1.

β ′

exit

recursive clauses

... ⊔               

β ′

aprox.

madrid institute for advanced studies in software development technologies

slide-16
SLIDE 16

6 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm

λcall q1 βentry q :- λ1p1,λ2 ..., λmpm λm+1. βexit

non-recursive clauses

... ⊔

  • βaprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′

  • aprox. p′

m

λ ′

m+1.

β ′

exit

recursive clauses

... ⊔               

β ′

aprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′′

  • aprox. p′

m

λ ′

m+1.

...

recursive clauses

⊔                       

β k−1

aprox.

madrid institute for advanced studies in software development technologies

slide-17
SLIDE 17

6 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm

λcall q1 βentry q :- λ1p1,λ2 ..., λmpm λm+1. βexit

non-recursive clauses

... ⊔

  • βaprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′

  • aprox. p′

m

λ ′

m+1.

β ′

exit

recursive clauses

... ⊔               

β ′

aprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′′

  • aprox. p′

m

λ ′

m+1.

...

recursive clauses

⊔                       

β k−1

aprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ k

  • aprox. p′

m

λ k

m+1.

β k

exit

recursive clauses

⊔                                 

β k

  • aprox. ≡ β k−1

aprox.

madrid institute for advanced studies in software development technologies

slide-18
SLIDE 18

6 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm

λcall q1 λsuccess. βentry q :- λ1p1,λ2 ..., λmpm λm+1. βexit

non-recursive clauses

... ⊔

  • βaprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′

  • aprox. p′

m

λ ′

m+1.

β ′

exit

recursive clauses

... ⊔               

β ′

aprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ ′′

  • aprox. p′

m

λ ′

m+1.

...

recursive clauses

⊔                       

β k−1

aprox.

β ′

entry q′ :- λ ′ 1 ..., λcall q1,λ k

  • aprox. p′

m

λ k

m+1.

β k

exit

recursive clauses

⊔                                 

β k

  • aprox. ≡ β k−1

aprox.

madrid institute for advanced studies in software development technologies

slide-19
SLIDE 19

7 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

  • Tabling suspends equivalent calls.
  • Entailment is used:
  • To discard subsumed abstract substitutions for a given predicate.
  • To detect when a fixpoint has been reached.
  • The LUB of abstract substitutions is computed incrementally.

madrid institute for advanced studies in software development technologies

slide-20
SLIDE 20

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 βentry q :- λ1 ..., λcall q1

madrid institute for advanced studies in software development technologies

slide-21
SLIDE 21

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 βentry q :- λ1 ..., λcall q1 β ′

entry q′ :- λ ′ 1p1,λ ′ 2 ..., λ ′ mpm λ ′ m+1.

βexit

madrid institute for advanced studies in software development technologies

slide-22
SLIDE 22

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 βentry q :- λ1 ..., λcall q1 β ′

entry q′ :- λ ′ 1p1,λ ′ 2 ..., λ ′ mpm λ ′ m+1.

βexit

recursive clause non-recursive clause

β ′

exitβexit

⊔       

β ′′

exit

madrid institute for advanced studies in software development technologies

slide-23
SLIDE 23

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 βentry q :- λ1 ..., λcall q1 β ′

entry q′ :- λ ′ 1p1,λ ′ 2 ..., λ ′ mpm λ ′ m+1.

βexit

recursive clause non-recursive clause

β ′

exitβexit

⊔       

β ′′

exit

λ ′′

exit p′

m

λ ′′

m+1.

β ′′′

exitβ ′′ exit

⊔                 

β ′v

exit

madrid institute for advanced studies in software development technologies

slide-24
SLIDE 24

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 βentry q :- λ1 ..., λcall q1 β ′

entry q′ :- λ ′ 1p1,λ ′ 2 ..., λ ′ mpm λ ′ m+1.

βexit

recursive clause non-recursive clause

β ′

exitβexit

⊔       

β ′′

exit

λ ′′

exit p′

m

λ ′′

m+1.

β ′′′

exitβ ′′ exit

⊔                 

β ′v

exit

λ ′v

exit ...

... ⊔                         

β k

exit

madrid institute for advanced studies in software development technologies

slide-25
SLIDE 25

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 βentry q :- λ1 ..., λcall q1 β ′

entry q′ :- λ ′ 1p1,λ ′ 2 ..., λ ′ mpm λ ′ m+1.

βexit

recursive clause non-recursive clause

β ′

exitβexit

⊔       

β ′′

exit

λ ′′

exit p′

m

λ ′′

m+1.

β ′′′

exitβ ′′ exit

⊔                 

β ′v

exit

λ ′v

exit ...

... ⊔                         

β k

exit

λ k

exit p′

m

λ k

m+1.

β k+1

exit ⊑ β k exit

madrid institute for advanced studies in software development technologies

slide-26
SLIDE 26

8 / 16

www.software.imdea.org

PLAI’s Fixpoint Algorithm using TCLP

λcall q1 λsuccess. βentry q :- λ1 ..., λcall q1 β ′

entry q′ :- λ ′ 1p1,λ ′ 2 ..., λ ′ mpm λ ′ m+1.

βexit

recursive clause non-recursive clause

β ′

exitβexit

⊔       

β ′′

exit

λ ′′

exit p′

m

λ ′′

m+1.

β ′′′

exitβ ′′ exit

⊔                 

β ′v

exit

λ ′v

exit ...

... ⊔                         

β k

exit

λ k

exit p′

m

λ k

m+1.

β k+1

exit ⊑ β k exit

madrid institute for advanced studies in software development technologies

slide-27
SLIDE 27

9 / 16

www.software.imdea.org

TCLP Implementation: Internals

  • PLAI reimplementation: uses the lattice-based aggregate framework.
  • Abstract substitutions connected with Mod TCLP

, using attributed variables [8].

  • Mod TCLP sees abstract substitutions as constraints.
  • However, abstract substitutions are manipulated instead of constraints.

(transparently to the engine implementation.)

  • abs_lub: implementation of constraint interface that operates on abstract domains.
  • abs_lub is used to:
  • Determine suspension of calls.
  • Detect termination of fixpoint.
  • Aggregate (e.g., compute LUB) abstract substitutions.
  • Project and apply resulting abstract substitution.

madrid institute for advanced studies in software development technologies

slide-28
SLIDE 28

10 / 16

www.software.imdea.org

Fixpoint Code

call to success/7 using Mod TCLP

.

1

:- use_package(tclp_aggregate).

2

:- table call_to_success_fixpoint(_, _, abst_lub).

3

call_to_success(SgKey, Call, Proj, Sg, Sv, AbsInt, Succ) :-

4

call_to_success_fixpoint(SgKey, Sg, st(Sv, Call, Proj, AbsInt, Prime) ),

5

each_extend(Sg, Prime, AbsInt, Sv, Call, Succ).

6

call_to_success_fixpoint(SgKey, Sg, st(Sv, Call, Proj, AbsInt, Prime) ) :-

7

trans_clause(SgKey, _, Clause),

8

do_nr_cl(Clause, Sg, Sv, Call, Proj, AbsInt, Prime).

9

call_to_success_fixpoint(SgKey, Sg, st(Sv, _Call, Proj, AbsInt, Prime) ) :-

10

\+ trans_clause(SgKey, _, _),

11

apply_trusted0(Proj, SgKey, Sg, Sv, AbsInt, _ClId, Prime).

Note: do_nr_cl_clause/7 calls call_to_success/7 .

madrid institute for advanced studies in software development technologies

slide-29
SLIDE 29

11 / 16

www.software.imdea.org

PLAI’s code using Prolog

madrid institute for advanced studies in software development technologies

slide-30
SLIDE 30

12 / 16

www.software.imdea.org

PLAI’s code using TCLP

madrid institute for advanced studies in software development technologies

slide-31
SLIDE 31

13 / 16

www.software.imdea.org

abst_lub Implementation

Interface to Constraint Solver Implementing Domain Operations

1

call_entail(abst_lub, st(Sv, _, EntryA, Abs, _),

2

st(Sv, _, EntryB, Abs, _) ) :- identical_abstract(Abs, EntryA, EntryB).

3

answer_entail(abst_lub, st(Sv, _, _, Abs, ExitA),

4

st(Sv, _, _, Abs, ExitB) ) :- less_or_equal(Abs, ExitA, ExitB).

5

answer_join(abst_lub, st(Sv, _, _, Abs, ExitA),

6

st(Sv, _, _, Abs, ExitB),

7

st(Sv, _, _, Abs, Join ) ) :- compute_lub(Abs, [ExitA, ExitB], Join).

8

apply_answer(abst_lub, st(Sv, _, _, _, Join),

9

st(Sv, _, _, _, Var ) ) :- Var = Join.

madrid institute for advanced studies in software development technologies

slide-32
SLIDE 32

14 / 16

www.software.imdea.org

Evaluation: Code Complexity of TCLP vs. Prolog

  • TCLP implementation notably simpler.
  • Original implementation needs to keep track of dependencies among data, program points where

analysis was suspended/resumed, ...

  • Using e.g. external database, numerous parameters, special cases.
  • Original code:

call_to_success/13 has 8 clauses. proj_to_prime_nr/9 has 6 clauses... ...it starts the fixpoint.

  • TCLP code:

call_to_success/7 has 1 clause. call_to_success_fixpoint/3 has 2 clauses... ...it is evaluated under tabling.

  • TCLP does not need to pre-classify the non-recursive clauses.
  • The size of code with Mod TCLP is one-third the original size.

madrid institute for advanced studies in software development technologies

slide-33
SLIDE 33

15 / 16

www.software.imdea.org

Evaluation: Performance of TCLP vs. Prolog

+ Fixpoint handled at a lower level (tabling). − Internal data structures not optimal for TCLP (redundancy, copying overhead).

madrid institute for advanced studies in software development technologies

slide-34
SLIDE 34

15 / 16

www.software.imdea.org

Evaluation: Performance of TCLP vs. Prolog

+ Fixpoint handled at a lower level (tabling). − Internal data structures not optimal for TCLP (redundancy, copying overhead).

fi b f a l t a i a k l b

  • y

e r p v q u e e n s u b s t p v g a b r i e l r d t

  • k

m m a t f h a n

  • i

r e v f l i n a p p e n d r e v l i n p r e fi x r e v f p v p l a n s u b l i s t a p p r e v e r s e fl a t t e n p a l i n d r

  • f

a c t r

  • t

a t e m a x t r e e z e b r a b r

  • w

s e 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7

Speedup of TCLP w.r.t. Prolog ( Prologrun−time

TCLPrun−time )

Groundness Domain

madrid institute for advanced studies in software development technologies

slide-35
SLIDE 35

15 / 16

www.software.imdea.org

Evaluation: Performance of TCLP vs. Prolog

+ Fixpoint handled at a lower level (tabling). − Internal data structures not optimal for TCLP (redundancy, copying overhead).

f a c t p v q u e e n m m a t f m m a t r i x p r e fi x r e v f r e v f l i n r e v e r s e r e v l i n r

  • t

a t e p v p g a p p e n d s u b l i s t a p p z e b r a 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7

Speedup of TCLP w.r.t. Prolog ( Prologrun−time

TCLPrun−time )

Sharing & Freeness [12] Domain

madrid institute for advanced studies in software development technologies

slide-36
SLIDE 36

16 / 16

www.software.imdea.org

Conclusions

  • The TCLP tabling engine keeps tracks of dependencies, suspensions, restarts:
  • Code size: one-third.
  • Code simpler.
  • Easier maintainability.
  • Faster in majority of cases (up of 1.60×).

+ Evaluated with several standard benchmarks in two relevant abstract domains.

  • This implementation would benefit from changes in the CiaoPP internal representation.

madrid institute for advanced studies in software development technologies

slide-37
SLIDE 37

16 / 16

www.software.imdea.org

Conclusions

  • The TCLP tabling engine keeps tracks of dependencies, suspensions, restarts:
  • Code size: one-third.
  • Code simpler.
  • Easier maintainability.
  • Faster in majority of cases (up of 1.60×).

+ Evaluated with several standard benchmarks in two relevant abstract domains.

  • This implementation would benefit from changes in the CiaoPP internal representation.

Future work

  • Explore additional abstract domains.
  • Study scheduling strategies to favor propagation in constraint system.
  • Adapt abstract substitution representation / CiaoPP interface.

madrid institute for advanced studies in software development technologies

slide-38
SLIDE 38

16 / 16

www.software.imdea.org

Conclusions

  • The TCLP tabling engine keeps tracks of dependencies, suspensions, restarts:
  • Code size: one-third.
  • Code simpler.
  • Easier maintainability.
  • Faster in majority of cases (up of 1.60×).

+ Evaluated with several standard benchmarks in two relevant abstract domains.

  • This implementation would benefit from changes in the CiaoPP internal representation.

Future work

  • Explore additional abstract domains.
  • Study scheduling strategies to favor propagation in constraint system.
  • Adapt abstract substitution representation / CiaoPP interface.

THANKS!

madrid institute for advanced studies in software development technologies

slide-39
SLIDE 39

17 / 16

www.software.imdea.org

Bibliography I

[1] Bruynooghe, M. (1991). A Practical Framework for the Abstract Interpretation of Logic Programs. Journal of Logic Programming, 10:91–124. [2] Chico de Guzm´ an, P ., Carro, M., Hermenegildo, M. V., and Stuckey, P . (2012). A General Implementation Framework for Tabled CLP. In Int’l. Symposium on Functional and Logic Programming (FLOPS’12), number 7294 in LNCS, pages 104–119. Springer Verlag. [3] Cousot, P . and Cousot, R. (1977). Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In ACM Symposium on Principles of Programming Languages (POPL ’77), pages 238–252. ACM Press. [4] Demoen, B. and Sagonas, K. (1998). CAT: The Copying Approach to Tabling. In Programming Language Implementation and Logic Programming, volume 1490 of Lecture Notes in Computer Science, pages 21–35. Springer-Verlag. [5] Dietrich, S. W. (1987). Extension Tables: Memo Relations in Logic Programming. In Fourth IEEE Symposium on Logic Programming, pages 264–272. madrid institute for advanced studies in software development technologies

slide-40
SLIDE 40

18 / 16

www.software.imdea.org

Bibliography II

[6] Freire, J., Swift, T., and Warren, D. S. (2001). Beyond Depth-First: Improving Tabled Logic Programs through Alternative Scheduling Strategies. In International Symposium on Programming Language Implementation and Logic Programming, number 1140 in LNCS, pages 243–258. Springer-Verlag. [7] Guo, H.-F . and Gupta, G. (2008). Simplifying Dynamic Programming via Mode-directed Tabling. Software: Practice and Experience, (1):75–94. [8] Holzbaur, C. (1992). Metastructures vs. Attributed Variables in the Context of Extensible Unification. In Int’l. Symposium on Programming Language Implementation and Logic Programming, number 631 in LNCS, pages 260–268. Springer Verlag. [9] Janssens, G., Bruynooghe, M., and Dumortier, V. (1995). A Blueprint for an Abstract Machine for Abstract Interpretation of (Constraint) Logic Programs. In ILPS, pages 336–350. [10] Janssens, G. and Sagonas, K. (1998). On the Use of Tabling for Abstract Interpretation: An Experiment with Abstract Equation Systems. In Tabulation in Parsing and Deduction. [11] Kanamori, T. and Kawamura, T. (1993). Abstract Interpretation Based on OLDT Resolution. Journal of Logic Programming, 15:1–30. madrid institute for advanced studies in software development technologies

slide-41
SLIDE 41

19 / 16

www.software.imdea.org

Bibliography III

[12] Muthukumar, K. and Hermenegildo, M. (1991). Combined Determination of Sharing and Freeness of Program Variables Through Abstract Interpretation. In International Conference on Logic Programming (ICLP 1991), pages 49–63. MIT Press. [13] Muthukumar, K. and Hermenegildo, M. (1992). Compile-time Derivation of Variable Dependency Using Abstract

  • Interpretation. JLP, 13(2/3):315–347.

[14] Schrijvers, T., Demoen, B., and Warren, D. S. (2008). TCHR: a Framework for Tabled CLP. Theory and Practice

  • f Logic Programming, (4):491–526.

[15] Swift, T. and Warren, D. S. (2010). Tabling with answer subsumption: Implementation, applications and

  • performance. In Logics in Artificial Intelligence, volume 6341, pages 300–312.

[16] Warren, D. S. (1999). Programming in Tabled Prolog. https://www3.cs.stonybrook.edu/˜warren/xsbbook/book.html. Unpublished manuscript. Accessed on August, 2019. [17] Warren, R., Hermenegildo, M., and Debray, S. K. (1988). On the Practicality of Global Flow Analysis of Logic

  • Programs. In Fifth International Conference and Symposium on Logic Programming, pages 684–699. MIT Press.

madrid institute for advanced studies in software development technologies

slide-42
SLIDE 42

20 / 16

www.software.imdea.org

Bibliography IV

[18] Zhou, N.-F ., Kameya, Y., and Sato, T. (2010). Mode-Directed Tabling for Dynamic Programming, Machine Learning, and Constraint Solving. In Int’l. Conference on Tools with Artificial Intelligence, number 2, pages 213–218. IEEE. madrid institute for advanced studies in software development technologies