on data structure rewriting
play

On Data-Structure Rewriting Rachid Echahed LIG Lab, Grenoble - PowerPoint PPT Presentation

On Data-Structure Rewriting Rachid Echahed LIG Lab, Grenoble France June, 2010 Rewriting (reminder) A rewrite relation R is a binary relation R A A ( u , v ) R is read u rewrites into v and written u v Rewriting


  1. On Data-Structure Rewriting Rachid Echahed LIG Lab, Grenoble France June, 2010

  2. Rewriting (reminder) ◮ A rewrite relation R is a binary relation R ⊆ A × A ◮ ( u , v ) ∈ R is read “ u rewrites into v ” and written u → v

  3. Rewriting (reminder) R ⊆ A × A ◮ A = set of strings over a vocabulary ( V ∗ ) ◮ A = set of states of the form (variables, valuation) ◮ A = set of Turing Machine configurations ◮ A = set of lambda-terms ◮ A = set of trees (or terms) ◮ A = set of clauses ◮ A = set of process terms ◮ A = . . .

  4. Rewriting R ⊆ A × A ◮ How to define a rewrite relation R ? ◮ How to define a run or the execution of a program? ◮ A rewrite derivation : u 0 is the initial “call” u 0 → u 1 → . . . → u n ◮ A narrowing derivation : w 0 is the initial goal (to solve): w 0 � σ 1 w 1 . . . � σ n w n Where w i � σ w i + 1 iff σ ( w i ) → w i + 1 w i is an element of A with partial information σ instantiates w i

  5. � � � � � � � Motivation : Extension of Term Rewriting ; sharing subterms Function definitions by means of term rewrite rules 0 + x → x succ ( x ) + y → succ ( x + y ) double ( x ) → x + x Very well established domain with several results : Confluence, Termination, Strategies, Proof methods (equational reasoning, induction) etc. double ( x ) + x + double t t

  6. � � � � � Sharing Subterms (information) and Term Rewriting Consider the following rules: f ( a , b ) → c → a b Sharing does not preserve properties of tree (term) rewriting ! f ( a , a ) → f ( a , b ) → c �→ f f a b [Plump 99] survey on rewriting with “dags”.

  7. Motivation (continued) ◮ Data-structure rewriting including cyclic data-structures with pointers such as circular lists, doubly-linked lists, etc. ◮ Data-structures are more complex than terms (Cycles, Sharing) ◮ Difficult to encode efficiently using terms ◮ Usually described by pointers ( ⇒ pointer rewriting) ◮ Formally described as term-graphs term-graphs = terms with cycles and sharing

  8. � � � � Term-graphs [Barendregt et al. 87] [Plump 99, survey on acyclic term-graphs] Let Ω be a set of operation symbols. A term-graph t over Ω is defined by: ◮ a set of nodes N t , ◮ a subset of labeled nodes N Ω t ⊆ N t , ◮ a labeling function L t : N Ω t → Ω , ◮ a successor function S t : N Ω t → N ∗ t , 1 : f � � 1 � � 2 3 � � � � � 3 : g 2 : b 1 � ������� 1 2 4 : • 5 : h

  9. Term-graphs [Barendregt et al. 87] [Plump 99, survey on acyclic term-graphs] Let Ω be a set of operation symbols and F a set of feature symbols. A term-graph t over Ω and F is defined by: ◮ a set of nodes N t , ◮ a set of edges E t ◮ a subset of labeled nodes N Ω t ⊆ N t , ◮ a node labeling function L n t : N Ω t → Ω , ◮ an edge labeling function L e t : E t → F ◮ a source function S t : E t → N t , ◮ a target function T t : E t → N t ,

  10. (Term-)Graph Rewriting ◮ Which graphs? (Term-Graphs) ◮ Which rules? ◮ Which rewrite relation? Two main approaches ◮ Algorithmic approaches ◮ Algebraic approaches (DPO,SPO, . . . )

  11. Graph Transformation ◮ Handbook of Graph Grammars and Computing by Graph Transformation (World Scientific) ◮ Vol 1: Foundations, ed. G. Rozenberg, 1997 ◮ Vol 2: Applications, Languages and Tools eds. H. Ehrig, G. Engels, H.-J. Kreowski and G. Rozenberg, 1999 ◮ Vol 3: Concurrency, Parallelism and Distribution eds. H. Ehrig, H.-J. Kreowski, U. Montanari and G. Rozenberg, 1999 ◮ A Monograph in Theoretical Computer Science (An EATCS series) H. Ehrig, K. Ehrig, U. Prange, G. Taentzer: Fundamentals of Algebraic Graph Transformation. Springer-Verlag, 2006

  12. Outline Introduction Motivations Termgraph Rewrite Systems Confluence and Rewrite Strategies Narrowing A Modal Logic for Graph Transformation Conclusion

  13. Algorithmic approach [Barendregt et al. 87] Shape of a rule: L → R where L and R are rooted term-graphs. A rule can be defined as one graph together with two roots ( L + R , r 1 , r 2 ) where r 1 and r 2 are the roots of L and R respectively Let ρ be the rule ( L + R , r 1 , r 2 ) We say that G rewrites to H using the rule ρ if ◮ L matches a subgraph of G ( h : L → G | n ) ◮ (build phase) Construct graph G 1 = G + h ( R ) ◮ (redirection phase) G 2 = [ h ( r 1 ) ≫ h ( r 2 )] G 1 ◮ (garbage collection phase) H = G 2 | root A cumbersome definition, hard to deal with in practice!

  14. Rewrite Rules with actions Shape of a rewrite rule : [ L | C ] → R ◮ L is a term-graph pattern ◮ C is a node constraint, � n i = 1 ( α i �≈ β i ) . ◮ R is a sequence of actions a 1 ; a 2 ; . . . ; a n

  15. Actions We consider three kinds of actions : ◮ Node definition α : f ( α 1 , . . . , α n ) ◮ Edge redirection α ≫ i β ◮ Global redirection α ≫ β

  16. � � � Application of actions a [ t ] denotes the application of action(s) a on the term-graph t ◮ Let t = n : f ( p , q : a ) n : f � � � ������� � 2 1 � � � � p q : a ◮ Let t 1 = p : h ( p )[ t ] = n : f ( p : h ( p ) , q : a ) n : f � � ������� � � 1 2 � � � � q : a p : h 1

  17. � � � � Application of actions a [ t ] denotes the application of action(s) a on the term-graph t ◮ Let t 1 = p : h ( p )[ t ] = n : f ( p : h ( p ) , q : a ) n : f � � ������� � � 1 2 � � � � q : a p : h 1 ◮ Let t 2 = n ≫ 2 p [ t 1 ] = n : f ( p : h ( p ) , p ); q : a n : f � ������� 1 2 q : a p : h 1

  18. � � � � Application of actions a [ t ] denotes the application of action(s) a on the term-graph t ◮ Let t 2 = n ≫ 2 p [ t 1 ] = n : f ( p : h ( p ) , p ); q : a n : f � ������� 1 2 q : a p : h 1 ◮ Let t 3 = p ≫ q [ t 2 ] = n : f ( q , q ); p : h ( q ) n : f � 2 � � � � � 1 � 1 � q : a p : h

  19. Rewrite Step Let t be a term-graph Let ρ be a rewrite rule [ L | C ] → R t rewrite to s at node α , t → α s iff: ◮ ∃ m : L → t a homomorphism ( ρ -matcher) ◮ m ( root L ) = α ◮ α is reachable from root t ◮ m ( C ) holds ◮ s = m ( R )[ t ]

  20. Term-Graph Rewrite Systems (tGRS) –Example– Length of a circular list : r : length ( p ) → r : length ′ ( p , p ) r : length ′ ( p 1 : cons ( n , p 2 ) , p 2 ) → r : s ( 0 ) [ r : length ′ ( p 1 : cons ( n , p 2 ) , p 3 ) | p 2 �≈ p 3 ] → r : s ( q ); q : length ′ ( p 2 , p 3 ) Remark: term rewrite systems are tGRS’s.

  21. Term-Graph Rewrite Systems –Example– In-situ list reversal : o : reverse ( p ) → o : rev ( p , nil ) o : rev ( p 1 : cons ( n , nil ) , p 2 ) → p 1 ≫ 2 p 2 ; o ≫ p 1 o : rev ( p 1 : cons ( n , p 2 : cons ( m , p 3 ) , p 4 ) → p 1 ≫ 2 p 4 ; o ≫ 1 p 2 ; o ≫ 2 p 1 Visual Programming would help!

  22. � � � � � DPO approach of rewrite rules with actions A categorical approach can be found in [TERMGRAPH 06, ENTCS07, RTA07] l r � R L K m d m ′ l ′ r ′ � H G D Figure: Double pushout: a rewrite step ( G → H ) Redirections of edges (pointers) are handled by K = disconnection ( L , E , N ) and the morphisms l and r . Remark: Morphisms l and r are not injective! D is not unique!

  23. � � � � Confluence f ( x ) → x g ( x ) → x The following term-graph n : f q : g rewrites to q : g n : f

  24. � Confluence α : f ( β : c ) → β : a ; α ≫ β α : g ( β : c ) → β : b ; α ≫ β q : g p : f � � ������� � � � � � � q : c The label of node q may end as q : a or q : b

  25. Computing with non-confluent orthogonal Term-graph Rewrite Systems How to evaluate the following term-graph ? ◮ addlast ( length ( n : [ 1 , 2 ]) , n ) ◮ Two normal forms ◮ [ 1 , 2 , 2 ] (evaluate addlast after length ) ◮ [ 1 , 2 , 3 ] (evaluate length after addlast )

  26. Term-graphs with Priority [PPDP06][RTA07][RTA08] ◮ Endow Term-graphs with priorities ( G , < G ) to express which node should be evaluated first ◮ m 1 : addlast ( m 2 : length ( n :[ 1 , 2 ]) , n ); m 1 < m 2 ◮ Priorities should not be a total order (stay declarative) ◮ Which nodes should be ordered? ◮ Solution: Order only nodes producing a “side-effect”

  27. Strategies and needed nodes A strategy φ is a partial function which takes a rooted term-graph t and returns a node (position) n and a rule R , φ ( t ) = ( n , R ) such that the term-graph t can be reduced at node n using the rule R , t → n t ′

  28. Needed Nodes Let φ be a rewrite strategy. Let φ ( t ) = ( p , R ) . The node p is needed iff for all derivations t → β 1 t 1 → β 2 . . . t n − 1 → β n t n such that t n is a value, there exists i ∈ [ 1 .. n ] s.t. β i = p

  29. Inductively sequential Term Rewrite Systems ◮ Constitute a subclass of TRSs for which efficient rewrite strategies are available [Antoy 92] ◮ Are as expressive as Strongly Sequential TRSs ◮ Are the basis of modern functional and logic programming languages. ◮ Are defined by means of data-structures called Definitional trees

  30. Definitional Trees -case of terms- Let R be the following TRS f(k,nil) → R1 f(0,cons(x,l)) → R2 f(succ(n),cons(x,l)) → R3 A definitional tree of operator f is a hierarchical structure whose leaves are the rules defining f . f(k, l) f(k, nil) → R1 f(k, cons (x, u)) f(0, cons (x,u)) → R2 f(succ(y), cons (x,u)) → R3

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend