The Virtue of Vicious Circles Baltasar Trancn y Widemann TU Ilmenau - - PowerPoint PPT Presentation

the virtue of vicious circles
SMART_READER_LITE
LIVE PREVIEW

The Virtue of Vicious Circles Baltasar Trancn y Widemann TU Ilmenau - - PowerPoint PPT Presentation

Introduction Technique Applications Conclusion The Virtue of Vicious Circles Baltasar Trancn y Widemann TU Ilmenau 2016-10-25 Trancn y Widemann The Virtue of Vicious Circles 1 / 34 Introduction Technique Applications Conclusion


slide-1
SLIDE 1

Introduction Technique Applications Conclusion

The Virtue of Vicious Circles

Baltasar Trancón y Widemann

TU Ilmenau

2016-10-25

Trancón y Widemann The Virtue of Vicious Circles 1 / 34

slide-2
SLIDE 2

Introduction Technique Applications Conclusion

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 1 / 34

slide-3
SLIDE 3

Introduction Technique Applications Conclusion

History

Background: functional programming & compiler construction Ideas & experiments 2002–2004 PhD Thesis 2005–2006 Few spin-off papers –2008 In limbo since

Trancón y Widemann The Virtue of Vicious Circles 2 / 34

slide-4
SLIDE 4

Introduction Technique Applications Conclusion

Data Objects

Data structures in memory

cells local primitive data references/pointers (to cells & other pointers)

Arise where terms are not expressive enough

semantic networks programming language intermediate representations self-referential stuff in general

Trancón y Widemann The Virtue of Vicious Circles 3 / 34

slide-5
SLIDE 5

Introduction Technique Applications Conclusion

Data Objects

Data structures in memory

cells local primitive data references/pointers (to cells & other pointers)

Arise where terms are not expressive enough

semantic networks programming language intermediate representations self-referential stuff in general

Trancón y Widemann The Virtue of Vicious Circles 3 / 34

slide-6
SLIDE 6

Introduction Technique Applications Conclusion

Deep Equality

Graph structure is not fully abstract Equate objects with equivalent structure

same observation paths not just isomorphism several degrees of freedom in recursive types

Trancón y Widemann The Virtue of Vicious Circles 4 / 34

slide-7
SLIDE 7

Introduction Technique Applications Conclusion

Deep Equality Illustrated

Non-cyclic freedom: sharing 1 1 2 3 5 3 5 Cyclic freedom: unrolling

1

internal (period) unrolling

2

external (phase) unrolling

Trancón y Widemann The Virtue of Vicious Circles 5 / 34

slide-8
SLIDE 8

Introduction Technique Applications Conclusion

Deep Equality Illustrated

Non-cyclic freedom: sharing 1 1 2 3 5 Cyclic freedom: unrolling

1

internal (period) unrolling

2

external (phase) unrolling

Trancón y Widemann The Virtue of Vicious Circles 5 / 34

slide-9
SLIDE 9

Introduction Technique Applications Conclusion

Deep Equality Illustrated

Non-cyclic freedom: sharing 1 1 2 3 5 Cyclic freedom: unrolling

1

internal (period) unrolling

2

external (phase) unrolling

1 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 5 / 34

slide-10
SLIDE 10

Introduction Technique Applications Conclusion

Deep Equality Illustrated

Non-cyclic freedom: sharing 1 1 2 3 5 Cyclic freedom: unrolling

1

internal (period) unrolling

2

external (phase) unrolling

1 2 3 5 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 5 / 34

slide-11
SLIDE 11

Introduction Technique Applications Conclusion

Deep Equality Illustrated

Non-cyclic freedom: sharing 1 1 2 3 5 Cyclic freedom: unrolling

1

internal (period) unrolling

2

external (phase) unrolling

1 2 3 5 2

Trancón y Widemann The Virtue of Vicious Circles 5 / 34

slide-12
SLIDE 12

Introduction Technique Applications Conclusion

Circles

. . . arise naturally

recursive let mutual destructive assignment unification without occurrence check

. . . are often embarassing for semantics & practice

circular references are not part–whole relationships exhaustive (inductive) traversal fails

Trancón y Widemann The Virtue of Vicious Circles 6 / 34

slide-13
SLIDE 13

Introduction Technique Applications Conclusion

Circles

. . . arise naturally

recursive let mutual destructive assignment unification without occurrence check

. . . are often embarassing for semantics & practice

circular references are not part–whole relationships exhaustive (inductive) traversal fails

Trancón y Widemann The Virtue of Vicious Circles 6 / 34

slide-14
SLIDE 14

Introduction Technique Applications Conclusion

Illustration

(xkcd 2009) Trancón y Widemann The Virtue of Vicious Circles 7 / 34

slide-15
SLIDE 15

Introduction Technique Applications Conclusion

Illustration

(xkcd 2009) Trancón y Widemann The Virtue of Vicious Circles 7 / 34

slide-16
SLIDE 16

Introduction Technique Applications Conclusion

Illustration

(xkcd 2009) Trancón y Widemann The Virtue of Vicious Circles 7 / 34

slide-17
SLIDE 17

Introduction Technique Applications Conclusion

Illustration

(xkcd 2009) Trancón y Widemann The Virtue of Vicious Circles 7 / 34

slide-18
SLIDE 18

Introduction Technique Applications Conclusion

Motivating Example #1

data List a = Cons a (List a) | Nil map f (Cons x xs) = Cons (f x) (map f xs) map f Nil = Nil let yoink = Cons 2 (Cons 3 (Cons 5 yoink)) in map (+1) (Cons 1 yoink)

Trancón y Widemann The Virtue of Vicious Circles 8 / 34

slide-19
SLIDE 19

Introduction Technique Applications Conclusion

Motivating Example #2

1 2 3 5

YOINK!

1

Is there an even number?

YES

example easy

2

Is there a perfect number?

NO

no example hard

3

Are all numbers prime?

NO

counterex. easy

4

Are all numbers Fibonacci?

YES

no counterex. hard No good writing a Haskell program

Trancón y Widemann The Virtue of Vicious Circles 9 / 34

slide-20
SLIDE 20

Introduction Technique Applications Conclusion

Motivating Example #2

1 2 3 5

YOINK!

1

Is there an even number?

YES

example easy

2

Is there a perfect number?

NO

no example hard

3

Are all numbers prime?

NO

counterex. easy

4

Are all numbers Fibonacci?

YES

no counterex. hard No good writing a Haskell program

Trancón y Widemann The Virtue of Vicious Circles 9 / 34

slide-21
SLIDE 21

Introduction Technique Applications Conclusion

Motivating Example #2

1 2 3 5

YOINK!

1

Is there an even number?

YES

example easy

2

Is there a perfect number?

NO

no example hard

3

Are all numbers prime?

NO

counterex. easy

4

Are all numbers Fibonacci?

YES

no counterex. hard No good writing a Haskell program

Trancón y Widemann The Virtue of Vicious Circles 9 / 34

slide-22
SLIDE 22

Introduction Technique Applications Conclusion

Summary

Graph-shaped data are relevant but their graph shape is often not Algorithms should be aware

use graph structure for termination respect deep equality

Trancón y Widemann The Virtue of Vicious Circles 10 / 34

slide-23
SLIDE 23

Introduction Technique Applications Conclusion

Summary

Graph-shaped data are relevant but their graph shape is often not Algorithms should be aware

use graph structure for termination respect deep equality

Trancón y Widemann The Virtue of Vicious Circles 10 / 34

slide-24
SLIDE 24

Introduction Technique Applications Conclusion Pointers Cycles Details

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 10 / 34

slide-25
SLIDE 25

Introduction Technique Applications Conclusion Pointers Cycles Details

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 10 / 34

slide-26
SLIDE 26

Introduction Technique Applications Conclusion Pointers Cycles Details

Pointers & Cells

A snapshot of memory is a map of addresses to cells

local bits pointers to (addresses of) cells

The semantics of a pointer (wrt a snapshot) is a pointed map

  • bservation by (transitive) dereferencing

F(X) = 2∗ × X∗ α : A → F(A)

Trancón y Widemann The Virtue of Vicious Circles 11 / 34

slide-27
SLIDE 27

Introduction Technique Applications Conclusion Pointers Cycles Details

Pointers & Cells

A snapshot of memory is a map of addresses to cells

local bits pointers to (addresses of) cells

The semantics of a pointer (wrt a snapshot) is a pointed map

  • bservation by (transitive) dereferencing

F(X) = 2∗ × X∗ α : A → F(A)

Trancón y Widemann The Virtue of Vicious Circles 11 / 34

slide-28
SLIDE 28

Introduction Technique Applications Conclusion Pointers Cycles Details

Pointers & Cells

A snapshot of memory is a map of addresses to cells

local bits pointers to (addresses of) cells

The semantics of a pointer (wrt a snapshot) is a pointed map

  • bservation by (transitive) dereferencing

F(X) = 2∗ × X∗ α : A → F(A)

Trancón y Widemann The Virtue of Vicious Circles 11 / 34

slide-29
SLIDE 29

Introduction Technique Applications Conclusion Pointers Cycles Details

Pointer Coalgebra

Memory states are coalgebras Pointers are pointed coalgebras Deep equality is bisimilarity Hierarchy of models initial finite noncircular data – too small rational finite circular data – about right final infinite data – too large

Trancón y Widemann The Virtue of Vicious Circles 12 / 34

slide-30
SLIDE 30

Introduction Technique Applications Conclusion Pointers Cycles Details

Pointer Coalgebra

Memory states are coalgebras Pointers are pointed coalgebras Deep equality is bisimilarity Hierarchy of models initial finite noncircular data – too small rational finite circular data – about right final infinite data – too large

Trancón y Widemann The Virtue of Vicious Circles 12 / 34

slide-31
SLIDE 31

Introduction Technique Applications Conclusion Pointers Cycles Details

Pointer Coalgebra

Memory states are coalgebras Pointers are pointed coalgebras Deep equality is bisimilarity Hierarchy of models initial finite noncircular data – too small rational finite circular data – about right final infinite data – too large

Trancón y Widemann The Virtue of Vicious Circles 12 / 34

slide-32
SLIDE 32

Introduction Technique Applications Conclusion Pointers Cycles Details

Iteration & Coiteration in a Nutshell

Consider simpler functor P(X) = X + 1 Iteration uses initial model N, [succ, zero] Coiteration uses final model N ∪ {∞}, pred

Trancón y Widemann The Virtue of Vicious Circles 13 / 34

slide-33
SLIDE 33

Introduction Technique Applications Conclusion Pointers Cycles Details

Iteration & Coiteration in a Nutshell

Consider simpler functor P(X) = X + 1 Iteration uses initial model N, [succ, zero] Coiteration uses final model N ∪ {∞}, pred

Trancón y Widemann The Virtue of Vicious Circles 13 / 34

slide-34
SLIDE 34

Introduction Technique Applications Conclusion Pointers Cycles Details

Iteration & Coiteration in a Nutshell

Consider simpler functor P(X) = X + 1 Iteration uses initial model N, [succ, zero] Coiteration uses final model N ∪ {∞}, pred

Trancón y Widemann The Virtue of Vicious Circles 13 / 34

slide-35
SLIDE 35

Introduction Technique Applications Conclusion Pointers Cycles Details

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 13 / 34

slide-36
SLIDE 36

Introduction Technique Applications Conclusion Pointers Cycles Details

Motto

Those who cannot remember the past are condemned to repeat it. (Ruiz de Santayana 1906)

Trancón y Widemann The Virtue of Vicious Circles 14 / 34

slide-37
SLIDE 37

Introduction Technique Applications Conclusion Pointers Cycles Details

Call Stack

Standard implementation of recursive functions Incarnation = code + (top) stack frame Cycle = identical stacked frames Suffices for cycle detection Handling?

Trancón y Widemann The Virtue of Vicious Circles 15 / 34

slide-38
SLIDE 38

Introduction Technique Applications Conclusion Pointers Cycles Details

Call Stack

Standard implementation of recursive functions Incarnation = code + (top) stack frame Cycle = identical stacked frames Suffices for cycle detection Handling?

Trancón y Widemann The Virtue of Vicious Circles 15 / 34

slide-39
SLIDE 39

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-40
SLIDE 40

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-41
SLIDE 41

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-42
SLIDE 42

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-43
SLIDE 43

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-44
SLIDE 44

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5 6

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-45
SLIDE 45

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5 6 4

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-46
SLIDE 46

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5 6 4 3

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-47
SLIDE 47

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations I

1 2 3 5 6 4 3 2

Trancón y Widemann The Virtue of Vicious Circles 16 / 34

slide-48
SLIDE 48

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-49
SLIDE 49

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-50
SLIDE 50

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 2 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-51
SLIDE 51

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 2 3 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-52
SLIDE 52

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 2 3 4 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-53
SLIDE 53

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 2 3 4 6 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-54
SLIDE 54

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 2 3 4 6 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-55
SLIDE 55

Introduction Technique Applications Conclusion Pointers Cycles Details

Order of Operations II

1 2 3 5 2 3 4 6 Destination-passing style (Minamide 1998) Tail recursion modulo cons(tructor) (Warren 1980)

can be used to eliminate tail calls, or alternatively to handle duckling loops!

Lazy evaluation similar; consumer- not producer-driven

Trancón y Widemann The Virtue of Vicious Circles 17 / 34

slide-56
SLIDE 56

Introduction Technique Applications Conclusion Pointers Cycles Details

Handler #1

Retain stack frames Fix output before recursive call Cycle detected = ⇒ copy outputs Generic algorithm (calling convention)

applied to recursive function definition implements coiteration of body as coalgebra

Proof by bisimulation construction & graph coloring

Trancón y Widemann The Virtue of Vicious Circles 18 / 34

slide-57
SLIDE 57

Introduction Technique Applications Conclusion Pointers Cycles Details

Handler #1

Retain stack frames Fix output before recursive call Cycle detected = ⇒ copy outputs Generic algorithm (calling convention)

applied to recursive function definition implements coiteration of body as coalgebra

Proof by bisimulation construction & graph coloring

Trancón y Widemann The Virtue of Vicious Circles 18 / 34

slide-58
SLIDE 58

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-59
SLIDE 59

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-60
SLIDE 60

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

2

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-61
SLIDE 61

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

2 3

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-62
SLIDE 62

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

2 3 4

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-63
SLIDE 63

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

2 3 4 6

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-64
SLIDE 64

Introduction Technique Applications Conclusion Pointers Cycles Details

Illustration

1 2 3 5

YOINK!

2 3 4 6

YOINK!

Trancón y Widemann The Virtue of Vicious Circles 19 / 34

slide-65
SLIDE 65

Introduction Technique Applications Conclusion Pointers Cycles Details

Handler #2

Boolean function encoded as positive Hilbert calculus Semantics depend on data no cycles unique fixpoint (induction) cycles complete lattice of fixpoints (Tarski) Cycle detected = ⇒ abort with constant value Generic algorithm

constant false/true select least/greatest fixpoint, resp. change of strategy safe at stratification boundaries

Possibly for other (finite) base lattices?

Trancón y Widemann The Virtue of Vicious Circles 20 / 34

slide-66
SLIDE 66

Introduction Technique Applications Conclusion Pointers Cycles Details

Handler #2

Boolean function encoded as positive Hilbert calculus Semantics depend on data no cycles unique fixpoint (induction) cycles complete lattice of fixpoints (Tarski) Cycle detected = ⇒ abort with constant value Generic algorithm

constant false/true select least/greatest fixpoint, resp. change of strategy safe at stratification boundaries

Possibly for other (finite) base lattices?

Trancón y Widemann The Virtue of Vicious Circles 20 / 34

slide-67
SLIDE 67

Introduction Technique Applications Conclusion Pointers Cycles Details

More Handlers?

Similar approach by Kozen’s group (Jeannin, Kozen, and Silva 2013) Pluggable cycle handlers

fixpoints numerical solvers . . .

Trancón y Widemann The Virtue of Vicious Circles 21 / 34

slide-68
SLIDE 68

Introduction Technique Applications Conclusion Pointers Cycles Details

Cycle Handling vs. Laziness

Handler #1 for free in lazy evaluation but Final semantics conflate cycles & true infinity Handler #2 impossible in lazy evaluation Combination yields many interesting algorithms General(?) recipe:

1

take ordinary recursive algorithm

2

add cycle handler

3

  • btain cycle-aware algorithm – or fail

Trancón y Widemann The Virtue of Vicious Circles 22 / 34

slide-69
SLIDE 69

Introduction Technique Applications Conclusion Pointers Cycles Details

Cycle Handling vs. Laziness

Handler #1 for free in lazy evaluation but Final semantics conflate cycles & true infinity Handler #2 impossible in lazy evaluation Combination yields many interesting algorithms General(?) recipe:

1

take ordinary recursive algorithm

2

add cycle handler

3

  • btain cycle-aware algorithm – or fail

Trancón y Widemann The Virtue of Vicious Circles 22 / 34

slide-70
SLIDE 70

Introduction Technique Applications Conclusion Pointers Cycles Details

Cycle Handling vs. Laziness

Handler #1 for free in lazy evaluation but Final semantics conflate cycles & true infinity Handler #2 impossible in lazy evaluation Combination yields many interesting algorithms General(?) recipe:

1

take ordinary recursive algorithm

2

add cycle handler

3

  • btain cycle-aware algorithm – or fail

Trancón y Widemann The Virtue of Vicious Circles 22 / 34

slide-71
SLIDE 71

Introduction Technique Applications Conclusion Pointers Cycles Details

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 22 / 34

slide-72
SLIDE 72

Introduction Technique Applications Conclusion Pointers Cycles Details

Efficiency

Cycle detection by stack inspection is costly Save work by invariant every cycle contains a marked pointer Trivial in pure functional programming

mark the YOINK! pointers

For regular functions (homomorphisms) check only upon mark Also for reference-counting garbage collection

Trancón y Widemann The Virtue of Vicious Circles 23 / 34

slide-73
SLIDE 73

Introduction Technique Applications Conclusion Pointers Cycles Details

Efficiency

Cycle detection by stack inspection is costly Save work by invariant every cycle contains a marked pointer Trivial in pure functional programming

mark the YOINK! pointers

For regular functions (homomorphisms) check only upon mark Also for reference-counting garbage collection

Trancón y Widemann The Virtue of Vicious Circles 23 / 34

slide-74
SLIDE 74

Introduction Technique Applications Conclusion Pointers Cycles Details

Efficiency

Cycle detection by stack inspection is costly Save work by invariant every cycle contains a marked pointer Trivial in pure functional programming

mark the YOINK! pointers

For regular functions (homomorphisms) check only upon mark Also for reference-counting garbage collection

Trancón y Widemann The Virtue of Vicious Circles 23 / 34

slide-75
SLIDE 75

Introduction Technique Applications Conclusion Pointers Cycles Details

Implementation

Requires read/write access to call stack

not supported by usual backends (C, JVM, .NET, . . . )

Possible solution: stackless transform

add code to load/unload stack frames to heap objects portable implementation of continuations

Trancón y Widemann The Virtue of Vicious Circles 24 / 34

slide-76
SLIDE 76

Introduction Technique Applications Conclusion Pointers Cycles Details

Implementation

Requires read/write access to call stack

not supported by usual backends (C, JVM, .NET, . . . )

Possible solution: stackless transform

add code to load/unload stack frames to heap objects portable implementation of continuations

Trancón y Widemann The Virtue of Vicious Circles 24 / 34

slide-77
SLIDE 77

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 24 / 34

slide-78
SLIDE 78

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 24 / 34

slide-79
SLIDE 79

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Addition

Rational numbers as sequences of digits Addition is not naturally coiterative

depends on carry from the infinite right

Consider half-addition instead

sum/carry digitwise (cf. map) shift & repeat

Converges

each digit can overflow at most once

Trancón y Widemann The Virtue of Vicious Circles 25 / 34

slide-80
SLIDE 80

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Addition

Rational numbers as sequences of digits Addition is not naturally coiterative

depends on carry from the infinite right

Consider half-addition instead

sum/carry digitwise (cf. map) shift & repeat

Converges

each digit can overflow at most once

Trancón y Widemann The Virtue of Vicious Circles 25 / 34

slide-81
SLIDE 81

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Addition

Rational numbers as sequences of digits Addition is not naturally coiterative

depends on carry from the infinite right

Consider half-addition instead

sum/carry digitwise (cf. map) shift & repeat

Converges

each digit can overflow at most once

Trancón y Widemann The Virtue of Vicious Circles 25 / 34

slide-82
SLIDE 82

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Division

Long division

compute most significant digit by trial subtraction repeat with remainder

Reverse loop structure

inner iteration

  • uter coiteration

Problem: cycle modulo bisimilarity

Trancón y Widemann The Virtue of Vicious Circles 26 / 34

slide-83
SLIDE 83

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Division

Long division

compute most significant digit by trial subtraction repeat with remainder

Reverse loop structure

inner iteration

  • uter coiteration

Problem: cycle modulo bisimilarity

Trancón y Widemann The Virtue of Vicious Circles 26 / 34

slide-84
SLIDE 84

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Division

Long division

compute most significant digit by trial subtraction repeat with remainder

Reverse loop structure

inner iteration

  • uter coiteration

Problem: cycle modulo bisimilarity

Trancón y Widemann The Virtue of Vicious Circles 26 / 34

slide-85
SLIDE 85

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 26 / 34

slide-86
SLIDE 86

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Usual suspects on lists

Usual list functions generalize by adding handler #1

append insert/delete (periodically)

Trancón y Widemann The Virtue of Vicious Circles 27 / 34

slide-87
SLIDE 87

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Filter

Filter is not naturally coinductive

can delete infinitely many elements straight away

Two-phase approach: mark & sweep

1

cross out unwanted elements

2

eight all crossed out or iteratively filterable

Trancón y Widemann The Virtue of Vicious Circles 28 / 34

slide-88
SLIDE 88

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Filter

Filter is not naturally coinductive

can delete infinitely many elements straight away

Two-phase approach: mark & sweep

1

cross out unwanted elements

2

eight all crossed out or iteratively filterable

Trancón y Widemann The Virtue of Vicious Circles 28 / 34

slide-89
SLIDE 89

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Quicksort

I G O A L W A Y S (O N)

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-90
SLIDE 90

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Quicksort

I G O A L W A Y S (O N) I G O A L W A Y S (O N) G A A I G O A L W A Y S (O N) I I G O A L W A Y S (O N) O L W Y S (O N)

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-91
SLIDE 91

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Quicksort

I G O A L W A Y S (O N) I G O A L W A Y S (O N) G A A

G A A A A G A A G G A A

I G O A L W A Y S (O N) I I G O A L W A Y S (O N) O L W Y S (O N)

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-92
SLIDE 92

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Quicksort

I G O A L W A Y S (O N) I G O A L W A Y S (O N) G A A

G A A A A G A A G G A A

I G O A L W A Y S (O N) I I G O A L W A Y S (O N) O L W Y S (O N)

O L W Y S (O N) L (N) O L W Y S (O N) O (O) O L W Y S (O N) W Y S

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-93
SLIDE 93

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Quicksort

I G O A L W A Y S (O N) I G O A L W A Y S (O N) G A A

G A A A A G A A G G A A

I G O A L W A Y S (O N) I I G O A L W A Y S (O N) O L W Y S (O N)

O L W Y S (O N) L (N) O L W Y S (O N) O (O) O L W Y S (O N) W Y S

W Y S S W Y S W W Y S Y

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-94
SLIDE 94

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Quicksort

I G O A L W A Y S (O N) I G O A L W A Y S (O N) G A A

G A A A A G A A G G A A

I G O A L W A Y S (O N) I I G O A L W A Y S (O N) O L W Y S (O N)

O L W Y S (O N) L (N) O L W Y S (O N) O (O) O L W Y S (O N) W Y S

W Y S S W Y S W W Y S Y

A A G I L (N)

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-95
SLIDE 95

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 29 / 34

slide-96
SLIDE 96

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Polynomial Datatypes

Sums, Products & Recursion Structural subtyping

sum with less variants product with more components transitively closed lifted to functions

Dynamic conversion by access operation mapping

table format recursive types = ⇒ circular table references

Type conversion tables form category

cycle-aware algorithms for subtype check & composition constant-time conversion of structured values

Trancón y Widemann The Virtue of Vicious Circles 30 / 34

slide-97
SLIDE 97

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Polynomial Datatypes

Sums, Products & Recursion Structural subtyping

sum with less variants product with more components transitively closed lifted to functions

Dynamic conversion by access operation mapping

table format recursive types = ⇒ circular table references

Type conversion tables form category

cycle-aware algorithms for subtype check & composition constant-time conversion of structured values

Trancón y Widemann The Virtue of Vicious Circles 30 / 34

slide-98
SLIDE 98

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Polynomial Datatypes

Sums, Products & Recursion Structural subtyping

sum with less variants product with more components transitively closed lifted to functions

Dynamic conversion by access operation mapping

table format recursive types = ⇒ circular table references

Type conversion tables form category

cycle-aware algorithms for subtype check & composition constant-time conversion of structured values

Trancón y Widemann The Virtue of Vicious Circles 30 / 34

slide-99
SLIDE 99

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Example

BinTree[α] ::= Branch2

  • BinTree[α], BinTree[α]
  • 1

| Leaf(α)

2

23Tree[β] ::= Branch3

  • 23Tree[β], 23Tree[β], 23Tree[β]
  • 1

| Branch2

  • 23Tree[β], 23Tree[β]
  • 2

| Leaf(β)

3

c : (α <: β) →

  • BinTree[α] <: 23Tree[β]
  • c(d) =
  • 1 →

2

c(d), c(d)

  • 2 →

3 (d)

  • Trancón y Widemann

The Virtue of Vicious Circles 31 / 34

slide-100
SLIDE 100

Introduction Technique Applications Conclusion Arithmetics Lists Subtyping

Example

BinTree[α] ::= Branch2

  • BinTree[α], BinTree[α]
  • 1

| Leaf(α)

2

23Tree[β] ::= Branch3

  • 23Tree[β], 23Tree[β], 23Tree[β]
  • 1

| Branch2

  • 23Tree[β], 23Tree[β]
  • 2

| Leaf(β)

3

c : (α <: β) →

  • BinTree[α] <: 23Tree[β]
  • c(d) =
  • 1 →

2

c(d), c(d)

  • 2 →

3 (d)

  • Trancón y Widemann

The Virtue of Vicious Circles 31 / 34

slide-101
SLIDE 101

Introduction Technique Applications Conclusion

1

Introduction

2

Technique Pointer Coalgebra Cycle Detection & Handling Technical Details

3

Applications Rational Arithmetics Circular Lists Structural Polynomial Subtyping

4

Conclusion

Trancón y Widemann The Virtue of Vicious Circles 31 / 34

slide-102
SLIDE 102

Introduction Technique Applications Conclusion

Take-Home Message

Adequate semantics of immutable data with pointers

rational coalgebra between initial and final model graph modulo deep equality

Applications in knowledge representation & compilers Cycle detection & handling

coiteration search problems

Trancón y Widemann The Virtue of Vicious Circles 32 / 34

slide-103
SLIDE 103

Introduction Technique Applications Conclusion

Take-Home Message

Adequate semantics of immutable data with pointers

rational coalgebra between initial and final model graph modulo deep equality

Applications in knowledge representation & compilers Cycle detection & handling

coiteration search problems

Trancón y Widemann The Virtue of Vicious Circles 32 / 34

slide-104
SLIDE 104

Introduction Technique Applications Conclusion

Take-Home Message

Adequate semantics of immutable data with pointers

rational coalgebra between initial and final model graph modulo deep equality

Applications in knowledge representation & compilers Cycle detection & handling

coiteration search problems

Trancón y Widemann The Virtue of Vicious Circles 32 / 34

slide-105
SLIDE 105

Introduction Technique Applications Conclusion

Outlook

Higher-order functions – from Set to CPO? Programming language syntax? Portable safe implementation Other lattices – abstract interpretation framework?

Trancón y Widemann The Virtue of Vicious Circles 33 / 34

slide-106
SLIDE 106

References

Jeannin, Jean-Baptiste, Dexter Kozen, and Alexandra Silva (2013). “Language Constructs for Non-Well-Founded Computation”. In: Programming Languages and Systems (ESOP 2013). Ed. by Matthias Felleisen and Philippa Gardner. Vol. 7792. Lecture Notes in Computer Science. Springer-Verlag,

  • pp. 61–80. DOI: ✶✵✳✶✵✵✼✴✾✼✽✲✸✲✻✹✷✲✸✼✵✸✻✲✻❴✹.

Minamide, Yasuhiko (1998). “A functional representation of data structures with a hole”. In: Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL ’98). San Diego, California, United States: ACM, pp. 75–84. ISBN: 0-89791-979-3. DOI: ✶✵✳✶✶✹✺✴✷✻✽✾✹✻✳✷✻✽✾✺✸. Ruiz de Santayana, Jorge Augustín Nicolás (1906). The Life of Reason. Warren, David H. D. (1980). DAI Research Report 141. University of Edinburgh. xkcd (2009). Ducklings. URL: ❤tt♣✿✴✴①❦❝❞✳❝♦♠✴✺✸✼✴. Trancón y Widemann The Virtue of Vicious Circles 35 / 34