Coalgebraic Semantics of Recursion on Circular Data Structures - - PowerPoint PPT Presentation

coalgebraic semantics of recursion on circular data
SMART_READER_LITE
LIVE PREVIEW

Coalgebraic Semantics of Recursion on Circular Data Structures - - PowerPoint PPT Presentation

Introduction Solution Applications Conclusion Coalgebraic Semantics of Recursion on Circular Data Structures Baltasar Trancn y Widemann (Technische Universitt Berlin) Universitt Bayreuth CALCO-Jnr 2011-08-29 B. Trancn y Widemann


slide-1
SLIDE 1

Introduction Solution Applications Conclusion

Coalgebraic Semantics of Recursion on Circular Data Structures

Baltasar Trancón y Widemann

(Technische Universität Berlin) Universität Bayreuth

CALCO-Jnr 2011-08-29

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 0 / 23

slide-2
SLIDE 2

Introduction Solution Applications Conclusion

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 0 / 23

slide-3
SLIDE 3

Introduction Solution Applications Conclusion Context The Problem

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 0 / 23

slide-4
SLIDE 4

Introduction Solution Applications Conclusion Context The Problem

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 0 / 23

slide-5
SLIDE 5

Introduction Solution Applications Conclusion Context The Problem

The Story of a PhD Thesis

Timeline 2000–2002 Search 2002–2004 Experiments 2004–2006 Writing 2007 Success! For my Thesis I Wanted to do something with functional programming, something with coalgebra, something funny, or at least surprising.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 1 / 23

slide-6
SLIDE 6

Introduction Solution Applications Conclusion Context The Problem

The Story of a PhD Thesis

Timeline 2000–2002 Search 2002–2004 Experiments 2004–2006 Writing 2007 Success! For my Thesis I Wanted to do something with functional programming, something with coalgebra, something funny, or at least surprising.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 1 / 23

slide-7
SLIDE 7

Introduction Solution Applications Conclusion Context The Problem

My Inspirations

Karczmarczuk, Jerzy (1998). “The Most Unreliable Technique in the World to Compute PI”. In: Workshop at the 3rd International Summer School on Advanced Functional Programming. Ruiz de Santayana, Jorge Augustín Nicolás (1906). The Life of Reason.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 2 / 23

slide-8
SLIDE 8

Introduction Solution Applications Conclusion Context The Problem

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 2 / 23

slide-9
SLIDE 9

Introduction Solution Applications Conclusion Context The Problem

Basic Scenario

Data structures as cells in memory Substructure relation as pointers between cells Computation by recursion along pointer chains 1 2 3 5

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 3 / 23

slide-10
SLIDE 10

Introduction Solution Applications Conclusion Context The Problem

Basic Scenario

Data structures as cells in memory Substructure relation as pointers between cells Computation by recursion along pointer chains 1 2 3 5 6

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 3 / 23

slide-11
SLIDE 11

Introduction Solution Applications Conclusion Context The Problem

Basic Scenario

Data structures as cells in memory Substructure relation as pointers between cells Computation by recursion along pointer chains 1 2 3 5 6 4

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 3 / 23

slide-12
SLIDE 12

Introduction Solution Applications Conclusion Context The Problem

Basic Scenario

Data structures as cells in memory Substructure relation as pointers between cells Computation by recursion along pointer chains 1 2 3 5 6 4 3

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 3 / 23

slide-13
SLIDE 13

Introduction Solution Applications Conclusion Context The Problem

Basic Scenario

Data structures as cells in memory Substructure relation as pointers between cells Computation by recursion along pointer chains 1 2 3 5 6 4 3 2

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 3 / 23

slide-14
SLIDE 14

Introduction Solution Applications Conclusion Context The Problem

Extension #1: Laziness

Lazy Thunks (Ingerman 1961) Contain code to perform suspended computations Replaced on demand by data computed on the fly Allow for potentially infinite data Break temporal connection between call and result

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 4 / 23

slide-15
SLIDE 15

Introduction Solution Applications Conclusion Context The Problem

Extension #2

(xkcd 2009)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 5 / 23

slide-16
SLIDE 16

Introduction Solution Applications Conclusion Context The Problem

Extension #2

(xkcd 2009)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 5 / 23

slide-17
SLIDE 17

Introduction Solution Applications Conclusion Context The Problem

Extension #2

(xkcd 2009)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 5 / 23

slide-18
SLIDE 18

Introduction Solution Applications Conclusion Context The Problem

Extension #2

(xkcd 2009)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 5 / 23

slide-19
SLIDE 19

Introduction Solution Applications Conclusion Context The Problem

Extension #2: Cycles

Pointer cycles arise naturally

– ring lists, doubly linked lists, threaded trees, . . .

Traditional segregation: acyclic data; referential transparency; structural recursion cyclic data; explicit mutable pointers; imperative updates Goal: Recursion in the presence of YOINK!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 6 / 23

slide-20
SLIDE 20

Introduction Solution Applications Conclusion Context The Problem

Extension #2: Cycles

Pointer cycles arise naturally

– ring lists, doubly linked lists, threaded trees, . . .

Traditional segregation: acyclic data; referential transparency; structural recursion cyclic data; explicit mutable pointers; imperative updates Goal: Recursion in the presence of YOINK!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 6 / 23

slide-21
SLIDE 21

Introduction Solution Applications Conclusion Context The Problem

Heureka!

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

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 7 / 23

slide-22
SLIDE 22

Introduction Solution Applications Conclusion Technique Semantics

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 7 / 23

slide-23
SLIDE 23

Introduction Solution Applications Conclusion Technique Semantics

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 7 / 23

slide-24
SLIDE 24

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-25
SLIDE 25

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-26
SLIDE 26

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-27
SLIDE 27

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-28
SLIDE 28

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-29
SLIDE 29

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-30
SLIDE 30

Introduction Solution Applications Conclusion Technique Semantics

Order of Operations

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 allows to handle duckling loops!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 8 / 23

slide-31
SLIDE 31

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-32
SLIDE 32

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-33
SLIDE 33

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

2

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-34
SLIDE 34

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

2 3

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-35
SLIDE 35

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

2 3 4

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-36
SLIDE 36

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

2 3 4 6

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-37
SLIDE 37

Introduction Solution Applications Conclusion Technique Semantics

Cycle Detection & Handling

1 2 3 5

YOINK!

2 3 4 6

YOINK!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 9 / 23

slide-38
SLIDE 38

Introduction Solution Applications Conclusion Technique Semantics

Search Problems

1 2 3 5

YOINK!

Search Problem Examples

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 The hard cases require cycle detection

– no need to look twice!

Lazy languages condemned to repeat

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 10 / 23

slide-39
SLIDE 39

Introduction Solution Applications Conclusion Technique Semantics

Search Problems

1 2 3 5

YOINK!

Search Problem Examples

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 The hard cases require cycle detection

– no need to look twice!

Lazy languages condemned to repeat

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 10 / 23

slide-40
SLIDE 40

Introduction Solution Applications Conclusion Technique Semantics

Search Problems

1 2 3 5

YOINK!

Search Problem Examples

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 The hard cases require cycle detection

– no need to look twice!

Lazy languages condemned to repeat

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 10 / 23

slide-41
SLIDE 41

Introduction Solution Applications Conclusion Technique Semantics

Implementation

Virtual Machine Similar to Java VM

– memory management, safe references – destination-passing style calling conventions – cycle detection by stack inspection

Alternative function body upon cycle detection

– limited access to call stack (YOINK!)

Efficiency Blanket cycle detection on every call too slow Mark at least one edge per cycle

– detection only for marked cases – eliminate tail calls for unmarked cases – trivial to maintain (YOINK!)

No cycle ⇒ no mark ⇒ (almost) no cost

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 11 / 23

slide-42
SLIDE 42

Introduction Solution Applications Conclusion Technique Semantics

Implementation

Virtual Machine Similar to Java VM

– memory management, safe references – destination-passing style calling conventions – cycle detection by stack inspection

Alternative function body upon cycle detection

– limited access to call stack (YOINK!)

Efficiency Blanket cycle detection on every call too slow Mark at least one edge per cycle

– detection only for marked cases – eliminate tail calls for unmarked cases – trivial to maintain (YOINK!)

No cycle ⇒ no mark ⇒ (almost) no cost

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 11 / 23

slide-43
SLIDE 43

Introduction Solution Applications Conclusion Technique Semantics

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 11 / 23

slide-44
SLIDE 44

Introduction Solution Applications Conclusion Technique Semantics

Pointer Coalgebra

Functor F(X) = {0, 1}∗ × X∗ (bits and pointers) Memory state as F-coalgebra Carrier live addresses Operation dereferencing Final coalgebra semantics

– restricted to finite representatives – decidable semantic equivalence (bisimilarity)

Referential transparency

– monotonocity w.r.t. final semantics – modulo garbage collection

A natural improvement over pointer algebra (Möller 1993)?

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 12 / 23

slide-45
SLIDE 45

Introduction Solution Applications Conclusion Technique Semantics

Pointer Coalgebra

Functor F(X) = {0, 1}∗ × X∗ (bits and pointers) Memory state as F-coalgebra Carrier live addresses Operation dereferencing Final coalgebra semantics

– restricted to finite representatives – decidable semantic equivalence (bisimilarity)

Referential transparency

– monotonocity w.r.t. final semantics – modulo garbage collection

A natural improvement over pointer algebra (Möller 1993)?

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 12 / 23

slide-46
SLIDE 46

Introduction Solution Applications Conclusion Technique Semantics

Pointer Coalgebra

Functor F(X) = {0, 1}∗ × X∗ (bits and pointers) Memory state as F-coalgebra Carrier live addresses Operation dereferencing Final coalgebra semantics

– restricted to finite representatives – decidable semantic equivalence (bisimilarity)

Referential transparency

– monotonocity w.r.t. final semantics – modulo garbage collection

A natural improvement over pointer algebra (Möller 1993)?

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 12 / 23

slide-47
SLIDE 47

Introduction Solution Applications Conclusion Technique Semantics

Pointer Coalgebra

Functor F(X) = {0, 1}∗ × X∗ (bits and pointers) Memory state as F-coalgebra Carrier live addresses Operation dereferencing Final coalgebra semantics

– restricted to finite representatives – decidable semantic equivalence (bisimilarity)

Referential transparency

– monotonocity w.r.t. final semantics – modulo garbage collection

A natural improvement over pointer algebra (Möller 1993)?

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 12 / 23

slide-48
SLIDE 48

Introduction Solution Applications Conclusion Technique Semantics

Pointer Coalgebra

Functor F(X) = {0, 1}∗ × X∗ (bits and pointers) Memory state as F-coalgebra Carrier live addresses Operation dereferencing Final coalgebra semantics

– restricted to finite representatives – decidable semantic equivalence (bisimilarity)

Referential transparency

– monotonocity w.r.t. final semantics – modulo garbage collection

A natural improvement over pointer algebra (Möller 1993)?

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 12 / 23

slide-49
SLIDE 49

Introduction Solution Applications Conclusion Technique Semantics

Structural Corecursion

Recursion preserving YOINK! implements structural corecursion

– primitive corecursion/coiteration

Generic algorithm

– given a coalgebra compatible with final semantics – performs referentially transparent memory operations – such that final semantics of result – equal image of final semantics of input – under unique homomorphism (anamorphism)

Proof of correctness by coinduction

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 13 / 23

slide-50
SLIDE 50

Introduction Solution Applications Conclusion Technique Semantics

Structural Corecursion

Recursion preserving YOINK! implements structural corecursion

– primitive corecursion/coiteration

Generic algorithm

– given a coalgebra compatible with final semantics – performs referentially transparent memory operations – such that final semantics of result – equal image of final semantics of input – under unique homomorphism (anamorphism)

Proof of correctness by coinduction

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 13 / 23

slide-51
SLIDE 51

Introduction Solution Applications Conclusion Technique Semantics

Structural Corecursion

Recursion preserving YOINK! implements structural corecursion

– primitive corecursion/coiteration

Generic algorithm

– given a coalgebra compatible with final semantics – performs referentially transparent memory operations – such that final semantics of result – equal image of final semantics of input – under unique homomorphism (anamorphism)

Proof of correctness by coinduction

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 13 / 23

slide-52
SLIDE 52

Introduction Solution Applications Conclusion Technique Semantics

Cyclical Logic

Given a search problem as a monotonic deduction system acyclic single fixpoint cyclic lattice of fixpoints (Tarski 1955) Generic algorithm

– deduce recursively (depth-first search) – break cycles with expectation YES or NO – always NO → least fixpoint (∃) – always YES → greatest fixpoint (∀) – otherwise (some consistency conditions) → intermediate fixpoints – monotonic, modular choice

Proof of correctness by lattice-theoretic methods Special case: bisimilarity as greatest fixpoint

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 14 / 23

slide-53
SLIDE 53

Introduction Solution Applications Conclusion Technique Semantics

Cyclical Logic

Given a search problem as a monotonic deduction system acyclic single fixpoint cyclic lattice of fixpoints (Tarski 1955) Generic algorithm

– deduce recursively (depth-first search) – break cycles with expectation YES or NO – always NO → least fixpoint (∃) – always YES → greatest fixpoint (∀) – otherwise (some consistency conditions) → intermediate fixpoints – monotonic, modular choice

Proof of correctness by lattice-theoretic methods Special case: bisimilarity as greatest fixpoint

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 14 / 23

slide-54
SLIDE 54

Introduction Solution Applications Conclusion Technique Semantics

Cyclical Logic

Given a search problem as a monotonic deduction system acyclic single fixpoint cyclic lattice of fixpoints (Tarski 1955) Generic algorithm

– deduce recursively (depth-first search) – break cycles with expectation YES or NO – always NO → least fixpoint (∃) – always YES → greatest fixpoint (∀) – otherwise (some consistency conditions) → intermediate fixpoints – monotonic, modular choice

Proof of correctness by lattice-theoretic methods Special case: bisimilarity as greatest fixpoint

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 14 / 23

slide-55
SLIDE 55

Introduction Solution Applications Conclusion Technique Semantics

Cyclical Logic

Given a search problem as a monotonic deduction system acyclic single fixpoint cyclic lattice of fixpoints (Tarski 1955) Generic algorithm

– deduce recursively (depth-first search) – break cycles with expectation YES or NO – always NO → least fixpoint (∃) – always YES → greatest fixpoint (∀) – otherwise (some consistency conditions) → intermediate fixpoints – monotonic, modular choice

Proof of correctness by lattice-theoretic methods Special case: bisimilarity as greatest fixpoint

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 14 / 23

slide-56
SLIDE 56

Introduction Solution Applications Conclusion

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 14 / 23

slide-57
SLIDE 57

Introduction Solution Applications Conclusion

Rational Decimal Arithmetics

Renaissance algorithms for decimal arithmetics (Ries 1522)

– Extended to cyclic sequences of digits – With (Karczmarczuk 1998) in mind

Addition/subtraction proceed right to left

– but there is no right end to start with

Half addition/subtraction compute local result and carrier independently (coiteration)

– shift & repeat – each digit overflows at most once (iteration)

Division computes digits by repeated subtraction (iteration)

– eventually a remainder recurs (coiteration)

Multiplication (directly) remains hard

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 15 / 23

slide-58
SLIDE 58

Introduction Solution Applications Conclusion

Rational Decimal Arithmetics

Renaissance algorithms for decimal arithmetics (Ries 1522)

– Extended to cyclic sequences of digits – With (Karczmarczuk 1998) in mind

Addition/subtraction proceed right to left

– but there is no right end to start with

Half addition/subtraction compute local result and carrier independently (coiteration)

– shift & repeat – each digit overflows at most once (iteration)

Division computes digits by repeated subtraction (iteration)

– eventually a remainder recurs (coiteration)

Multiplication (directly) remains hard

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 15 / 23

slide-59
SLIDE 59

Introduction Solution Applications Conclusion

Rational Decimal Arithmetics

Renaissance algorithms for decimal arithmetics (Ries 1522)

– Extended to cyclic sequences of digits – With (Karczmarczuk 1998) in mind

Addition/subtraction proceed right to left

– but there is no right end to start with

Half addition/subtraction compute local result and carrier independently (coiteration)

– shift & repeat – each digit overflows at most once (iteration)

Division computes digits by repeated subtraction (iteration)

– eventually a remainder recurs (coiteration)

Multiplication (directly) remains hard

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 15 / 23

slide-60
SLIDE 60

Introduction Solution Applications Conclusion

Rational Decimal Arithmetics

Renaissance algorithms for decimal arithmetics (Ries 1522)

– Extended to cyclic sequences of digits – With (Karczmarczuk 1998) in mind

Addition/subtraction proceed right to left

– but there is no right end to start with

Half addition/subtraction compute local result and carrier independently (coiteration)

– shift & repeat – each digit overflows at most once (iteration)

Division computes digits by repeated subtraction (iteration)

– eventually a remainder recurs (coiteration)

Multiplication (directly) remains hard

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 15 / 23

slide-61
SLIDE 61

Introduction Solution Applications Conclusion

Rational Decimal Arithmetics

Renaissance algorithms for decimal arithmetics (Ries 1522)

– Extended to cyclic sequences of digits – With (Karczmarczuk 1998) in mind

Addition/subtraction proceed right to left

– but there is no right end to start with

Half addition/subtraction compute local result and carrier independently (coiteration)

– shift & repeat – each digit overflows at most once (iteration)

Division computes digits by repeated subtraction (iteration)

– eventually a remainder recurs (coiteration)

Multiplication (directly) remains hard

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 15 / 23

slide-62
SLIDE 62

Introduction Solution Applications Conclusion

Cyclic Lists

Many list algorithms generalize to the cyclic case structural map, insert, delete, concat search any, all, sorted Man-or-boy test: filter

– laziness fails if infinitely many consecutive elements are discarded (bust) – can be split in three phases: mark instance of map busted instance of all sweep easy for non-busted case

With filter, concat and sorted we have quicksort!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 16 / 23

slide-63
SLIDE 63

Introduction Solution Applications Conclusion

Cyclic Lists

Many list algorithms generalize to the cyclic case structural map, insert, delete, concat search any, all, sorted Man-or-boy test: filter

– laziness fails if infinitely many consecutive elements are discarded (bust) – can be split in three phases: mark instance of map busted instance of all sweep easy for non-busted case

With filter, concat and sorted we have quicksort!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 16 / 23

slide-64
SLIDE 64

Introduction Solution Applications Conclusion

Cyclic Lists

Many list algorithms generalize to the cyclic case structural map, insert, delete, concat search any, all, sorted Man-or-boy test: filter

– laziness fails if infinitely many consecutive elements are discarded (bust) – can be split in three phases: mark instance of map busted instance of all sweep easy for non-busted case

With filter, concat and sorted we have quicksort!

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 16 / 23

slide-65
SLIDE 65

Introduction Solution Applications Conclusion

Structural Subtyping

Recursive type declarations with ad-hoc products & coproducts Structural subtyping by interface emulation

– opposed to layout compatibility (OOP) – transitive, deep, safe

Subtyping witness objects

– cyclically dependent layout maps (cf. vtables) – for static checking – for dynamic casting – composition by cyclic computation – dynamic deep “conversion” in O(1) time

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 17 / 23

slide-66
SLIDE 66

Introduction Solution Applications Conclusion

Structural Subtyping

Recursive type declarations with ad-hoc products & coproducts Structural subtyping by interface emulation

– opposed to layout compatibility (OOP) – transitive, deep, safe

Subtyping witness objects

– cyclically dependent layout maps (cf. vtables) – for static checking – for dynamic casting – composition by cyclic computation – dynamic deep “conversion” in O(1) time

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 17 / 23

slide-67
SLIDE 67

Introduction Solution Applications Conclusion

Structural Subtyping

Recursive type declarations with ad-hoc products & coproducts Structural subtyping by interface emulation

– opposed to layout compatibility (OOP) – transitive, deep, safe

Subtyping witness objects

– cyclically dependent layout maps (cf. vtables) – for static checking – for dynamic casting – composition by cyclic computation – dynamic deep “conversion” in O(1) time

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 17 / 23

slide-68
SLIDE 68

Introduction Solution Applications Conclusion

1

Introduction Context The Problem

2

Solution Technique Semantics

3

Applications

4

Conclusion

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 17 / 23

slide-69
SLIDE 69

Introduction Solution Applications Conclusion

Looking Back

Some Lessons Learned

1

Aiming for a nice problem pays off.

2

A position with time to merely think is invaluable.

3

Coalgebra is very hard to sell to real programmers (and some theoreticians, too).

4

Weird theory sometimes makes natural examples.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 18 / 23

slide-70
SLIDE 70

Introduction Solution Applications Conclusion

Status of Implementation

The MALICE System Java Application Executable VM Model

– assembly-style code format – interpreter

Compiler to lower-level code

– optimization, specialization – static + just-in-time – compiles to threaded code

IDE

– editors, browsers, interactive, demos

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 19 / 23

slide-71
SLIDE 71

Introduction Solution Applications Conclusion

Open Problems I

Front-end Language Leverage capabilities of the VM

– cyclic detection & handling – destination-passing & tail recursion

Nice high-level notation

– pattern-based recursion – referential transparency – safe operation order – declaration of cycle handling strategy – declaration of intended fixpoint

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 20 / 23

slide-72
SLIDE 72

Introduction Solution Applications Conclusion

Open Problems II

Generalized Search Problems Proof of soundness

– completeness (all fixpoints selectable)?

Relies on Boolean lattice of truth values

– other lattices? – application to abstract interpretation?

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 21 / 23

slide-73
SLIDE 73

Introduction Solution Applications Conclusion

Open Problems III

Compiler to Machine Code All ingredients ready

– memory management in the presence of YOINK! – portable cycle detection & handling

Trancón y Widemann, Baltasar (2008a). “A reference-counting garbage collection algorithm for cyclical functional programming”. In: ISMM.

  • Ed. by Richard Jones and Stephen M. Blackburn. ACM, pp. 71–80. ISBN:

978-1-60558-134-7. DOI: 10.1145/1375634.1375645. — (2008b). “Stackless Stack Inspection. A Portable Escape Route from Vicious Circles”. In: Programmiersprachen und Rechenkonzepte. Ed. by Michael Hanus and Sebastian Fischer. 0811.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 22 / 23

slide-74
SLIDE 74

Introduction Solution Applications Conclusion

Postscriptum

Vicious Circle (Reed 1976) You’re caught in a vicious circle Surrounded by your so-called friends You’re caught in a vicious circle And it looks like it will never end You’re caught in a vicious circle You’re caught in a vicious circle You’re caught in a vicious circle You’re caught in a vicious circle Surrounded by all of your friends

Reed, Lou (1976). “Vicious Circle”. In: Rock and Roll Heart.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 23 / 23

slide-75
SLIDE 75

References Applications

5

References

6

Applications Arithmetics Lists Subtyping

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 23 / 23

slide-76
SLIDE 76

References Applications

Bibliography I

Ingerman, P. Z. (1961). “Thunks. A Way of Compling Procedure Statements with Some Comments on Procedure Declarations”. In: CACM 4.1, pp. 55–58. Karczmarczuk, Jerzy (1998). “The Most Unreliable Technique in the World to Compute PI”. In: Workshop at the 3rd International Summer School on Advanced Functional Programming. 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: 10.1145/268946.268953.

Möller, Bernhard (1993). “Towards pointer algebra”. In: Science of Computer Programming 21.1, pp. 57–90. ISSN: 0167-6423. DOI: 10.1016/0167-6423(93)90008-D. Reed, Lou (1976). “Vicious Circle”. In: Rock and Roll Heart.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 24 / 23

slide-77
SLIDE 77

References Applications

Bibliography II

Ries, Adam (1522). Rechenung auff der linihen und federn. Erfurt. Ruiz de Santayana, Jorge Augustín Nicolás (1906). The Life of Reason. Tarski, Alfred (1955). “A lattice-theoretical fixpoint theorem and its applications”. In: Pacific Journal of Mathematics 5.2, pp. 285–309. Trancón y Widemann, Baltasar (2008a). “A reference-counting garbage collection algorithm for cyclical functional programming”. In: ISMM.

  • Ed. by Richard Jones and Stephen M. Blackburn. ACM, pp. 71–80. ISBN:

978-1-60558-134-7. DOI: 10.1145/1375634.1375645. — (2008b). “Stackless Stack Inspection. A Portable Escape Route from Vicious Circles”. In: Programmiersprachen und Rechenkonzepte. Ed. by Michael Hanus and Sebastian Fischer. 0811. Warren, David H. D. (1980). DAI Research Report 141. University of Edinburgh. xkcd (Sept. 31, 2009). Ducklings. URL: http://xkcd.com/537/.

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 25 / 23

slide-78
SLIDE 78

References Applications Arithmetics Lists Subtyping

5

References

6

Applications Arithmetics Lists Subtyping

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 25 / 23

slide-79
SLIDE 79

References Applications Arithmetics Lists Subtyping

5

References

6

Applications Arithmetics Lists Subtyping

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 25 / 23

slide-80
SLIDE 80

References Applications Arithmetics Lists Subtyping

Rational Decimal Arithmetics

0 . 2 8 (6 3) + 0 . 1 3 (8) . . . .

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-81
SLIDE 81

References Applications Arithmetics Lists Subtyping

Rational Decimal Arithmetics

0 . 2 8 (6 3) + 0 . 1 3 (8) 8 . . . .

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-82
SLIDE 82

References Applications Arithmetics Lists Subtyping

Rational Decimal Arithmetics

0 . 2 8 (6 3) + 0 . 1 3 (8) 8 0 . 3 1 (4 1) C 0 . 0 1 (1 1) . .

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-83
SLIDE 83

References Applications Arithmetics Lists Subtyping

Rational Decimal Arithmetics

0 . 2 8 (6 3) + 0 . 1 3 (8) 8 0 . 3 1 (4 1) + 0 . 1 (1 1) . .

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-84
SLIDE 84

References Applications Arithmetics Lists Subtyping

Rational Decimal Arithmetics

0 . 2 8 (6 3) + 0 . 1 3 (8) 8 0 . 3 1 (4 1) + 0 . 1 (1 1) 1 . .

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-85
SLIDE 85

References Applications Arithmetics Lists Subtyping

Rational Decimal Arithmetics

0 . 2 8 (6 3) + 0 . 1 3 (8) 8 0 . 3 1 (4 1) + 0 . 1 (1 1) 1 0 . 4 2 (5 2) C 0 . 0 0 (0 0)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-86
SLIDE 86

References Applications Arithmetics Lists Subtyping

5

References

6

Applications Arithmetics Lists Subtyping

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 26 / 23

slide-87
SLIDE 87

References Applications Arithmetics Lists Subtyping

Cyclic Lists

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

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-88
SLIDE 88

References Applications Arithmetics Lists Subtyping

Cyclic Lists

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)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-89
SLIDE 89

References Applications Arithmetics Lists Subtyping

Cyclic Lists

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)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-90
SLIDE 90

References Applications Arithmetics Lists Subtyping

Cyclic Lists

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

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-91
SLIDE 91

References Applications Arithmetics Lists Subtyping

Cyclic Lists

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

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-92
SLIDE 92

References Applications Arithmetics Lists Subtyping

Cyclic Lists

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)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-93
SLIDE 93

References Applications Arithmetics Lists Subtyping

5

References

6

Applications Arithmetics Lists Subtyping

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 27 / 23

slide-94
SLIDE 94

References Applications Arithmetics Lists Subtyping

Recursive Structural Subtyping

BinTree[α] ::= Branch2

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

| Leaf(α)

2

23Tree[β] ::= Branch3

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

| Branch2

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

| Leaf(β)

2

c : (α <: β) →

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

2

c(d), c(d)

  • 2 →

3 (d)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 28 / 23

slide-95
SLIDE 95

References Applications Arithmetics Lists Subtyping

Recursive Structural Subtyping

BinTree[α] ::= Branch2

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

| Leaf(α)

2

23Tree[β] ::= Branch3

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

| Branch2

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

| Leaf(β)

2

c : (α <: β) →

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

2

c(d), c(d)

  • 2 →

3 (d)

  • B. Trancón y Widemann

Coalgebraic . . . Circular Data Structures 28 / 23