String-diagram semantics for functional languages with data-flow Steven Cheung & Dan Ghica & Koko Moruya University of Birmingham 5th Jan 2018
GoI machine [Mackie ’95] [Danos & Regnier ’99] • Geometry of interaction [Girard ’89] • Token passing machine • a λ -term → a graph (proof-net) • evaluation = specific path travelled by the token
GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
GoI machine Contraction C ( λ x.x + x) (1 + 1) Constants + λ 1 1 box structure Abstraction ! ! ! D + Dereliction Binary addition @ Application
GoI machine C + λ 1 1 ! ! ! D + @ ? : □
GoI machine C + λ 1 1 ! ! ! D + @ R : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ R : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ R : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 1 : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 1 : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 1 : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 1 : 1 : ? : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 1 : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 1 : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ ? : 1 : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 1 : 1 : ? : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 2 : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : 2 : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : 2 : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ L : 2 : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 2 : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 2 : 2 : ? : □
GoI machine C + λ 1 1 ! ! ! D + @ 4 : □
GoI machine C + λ 1 1 ! ! ! D + @ R : 4 : □
GoI machine C + λ 1 1 ! ! ! D + @ R : 4 : □
GoI machine C + λ 1 1 ! ! ! D + @ R : 4 : □
GoI machine C + λ 1 1 ! ! ! D + @ 4 : □
GoI machine C + λ 1 1 ! ! ! D + @ 4 : □
GoI machine [Mackie ’95] [Danos & Regnier ’99] • Fixed graph = constants space • Compilation to circuit [Ghica ’07] • ✔ call-by-name, ? call-by-value
Dynamic GoI machine [Muroya & Ghica ’17] • Framework for defining FPL semantics • Combine token passing & graph rewriting • di ff erent interleaving = di ff erent strategy
Dynamic GoI machine [Muroya & Ghica ’17] C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) + λ 1 1 ! ! ! D + @
Dynamic GoI machine C C ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 + + λ λ 1 1 ! ! ! ! 2 D + D ! @ @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 + λ ! 2 D ! @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 + λ ! 2 D ! @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 + λ ! 2 D ! @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 + λ ! 2 D ! @
Dynamic GoI machine C ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 C + + 2 λ λ ! ! 2 @ D ! @
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 C + 2 λ ! @
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 C + 2 λ ! @
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 C ↦ x + x [x ↦ 2] 2 + 2 ! λ ! C + @
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ! C +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ! C +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ! C +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ! C +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 2 ↦ x + 2 [x ↦ 2] ! ! 2 C C ! + +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ↦ x + 2 [x ↦ 2] ! 2 C ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ↦ x + 2 [x ↦ 2] ! 2 C ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ↦ x + 2 [x ↦ 2] ! 2 C ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ↦ x + 2 [x ↦ 2] ! 2 C ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ↦ x + 2 [x ↦ 2] ! 2 C ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 ↦ x + 2 [x ↦ 2] 2 2 ↦ 2 + 2 [x ↦ 2] ! 2 ! ! C ! + +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] ↦ x + 2 [x ↦ 2] 2 2 ↦ 2 + 2 [x ↦ 2] ! ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] ↦ x + 2 [x ↦ 2] 2 2 ↦ 2 + 2 [x ↦ 2] ! ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] ↦ x + 2 [x ↦ 2] 2 2 ↦ 2 + 2 [x ↦ 2] ! ! +
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] ↦ x + 2 [x ↦ 2] 2 2 ↦ 2 + 2 [x ↦ 2] 4 ↦ 4 [x ↦ 2] ! ! ! +
DGoIM & data-flow model • GoI graph ~ data-flow graph • preserve data-flow by suppressing certain rewrites
Dynamic GoI machine ( λ x.x + x) (1 + 1) ↦ ( λ x.x + x) 2 ↦ x + x [x ↦ 2] 2 2 ↦ x + 2 [x ↦ 2] ! ! 2 C C ! + +
DGoIM & data-flow model 2 ¡ Ɔ +
DGoIM & data-flow model 2 ¡ Ɔ + ? : □
DGoIM & data-flow model 2 ¡ Ɔ + ? : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + ? : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + ? : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + 2 : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + 2 : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + ? : 2 : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + ? : 2 : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + ? : 2 : ? : □
DGoIM & data-flow model 2 ¡ Ɔ + 2 : 2 : ? : □
Recommend
More recommend