DynBindModelExamples

Template:Article will be deleted Author: Matthias Konrad

Contents

The system

In this example we are studying a simple system with three classes that contains both renaming and selects:

class
   A
feature
   f1 do ... end
   g1 do ... end
end
class
   B
inherit
   A
      rename f1 as f2, g1 as g2 
      redefine f2, g2 end
feature
   f2 do ... end
   g2 do ... end
end
class
   D
inherit
   
   A
      redefine f1, g1 
      select g1 end
   B
      select f2 end
feature
   f1 do ... end
   g1 do ... end
end

This system is defined by:

S=\left\{ A, B, D\right\}

\tau =  \left\{    A \mapsto \left\{ f1 \mapsto \underline{A.f1}, g1 \mapsto \underline{A.g1} \right\},     B \mapsto \left\{ f2 \mapsto \underline{B.f2}, g2 \mapsto \underline{B.g2} \right\},    D \mapsto \left\{ f1 \mapsto \underline{D.f1}, g1 \mapsto \underline{D.g1} \right\} \right\}

\alpha = \left\{    A \mapsto \emptyset,    B \mapsto \left\{ A \right\},    D \mapsto \left\{ A, B \right\} \right\}

\eta =  \left\{    A \mapsto \emptyset,    B \mapsto \left\{        A \mapsto \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}     \right\},    D \mapsto \left\{        A \mapsto \emptyset, B \mapsto \emptyset     \right\} \right\}

\sigma = \left\{    A \mapsto \emptyset,     B \mapsto \left\{ A \mapsto \emptyset \right\},     D \mapsto \left\{ A \mapsto \left\{ g_1 \right\},                      B \mapsto \left\{ f_2 \right\} \right\} \right\}

C = \left\{ 1 \mapsto A, 2 \mapsto B, 3 \mapsto D \right\}

The naming function

We proceed by calculating the naming function. According to its definition we have to do that incrementally. Meaning that we first calculate \beta_{S_1} then \beta_{S_2} and finally \beta_{S_3}.

Calculating \beta_{S_1}

Since \beta_{S_1} contains only one class it is sufficient to define \beta_{S_1}\left( A \mapsto A\right). According to the definition:

  • \beta_{S_1}\left( C_1 \mapsto C_1 \right)        =     \mbox{id} \left(        \mbox{dom} \left( \tau_1 \right)          \, \cup \,       \mbox {UNION} \ b \, \cdot \, \left(b \in \alpha_1          \ |\        \mbox{ran} \left( \beta_{ S_0 } \left( b \mapsto b \right) \ll \eta_{1, b} \right) \right) \right)

We can forget about the right part of the union since C_1\, has no base classes. So we need to calculate:

  1. \mbox{id} \left( \mbox{dom} \left( \tau_1 \right) \right)
    1. \tau_1 = \tau (C_1) = \left\{ f_1 \mapsto \underline{C_1.f_1}, g_1 \mapsto \underline{C_1.g_1} \right\}
    2. \mbox{dom} \left( \tau_1 \right) = \left\{ f_1, g_1 \right\}
    3. \mbox{id} \left( \mbox{dom} \left( \tau_1 \right) \right) = \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1\right\}

So we get:

\beta_{S_1}\left( C_1 \mapsto C_1 \right) = \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1\right\}

And hence:

\beta_{S_1} = \left\{ \left( C_1 \mapsto C_1 \right) \mapsto        \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\} \right\}

Calculating \beta_{S_2}

We show the calculation of the different (four) parts of the function in separate sections:

Calculate \beta_{S_2}\left( C_1 \mapsto C_1 \right)

According to the definition: \beta_{S_2}\left( C_1 \mapsto C_1 \right) =     \beta_{S_1}\left( C_1 \mapsto C_1 \right) =  \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1\right\}

Calculate \beta_{S_2}\left( C_2 \mapsto C_1 \right)

According to the definition: \beta_{S_2}\left( C_2 \mapsto C_1 \right) = \emptyset

Calculate \beta_{S_2}\left( C_2 \mapsto C_2 \right)

According to the definition: \beta_{S_2}\left( C_2 \mapsto C_2 \right)        =     \mbox{id} \left( \mbox{dom} \left( \tau_2 \right)       \, \cup \,    \mbox {UNION} \ b \, \cdot \, \left(b \in \alpha_2       \ |\     \mbox{ran}\left( \beta_{ S_{1} } \left( b \mapsto b \right) \ll \eta_{2, b} \right)\right)    \right)

Lets calculate the left part first:

  1. \tau_2 = \tau (C_2) = \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\}
  2. \mbox{dom} \left( \tau_2 \right) = \left\{ f_2, g_2 \right\}

And now the right part:

  1. \mbox {UNION} \ b \, \cdot \, \left(b \in \left\{ C_1 \right\}       \ |\     \mbox{ran}\left( \beta_{ S_{1} } \left( b \mapsto b \right) \ll \eta_{2, b} \right)\right) =  \mbox{ran}\left( \beta_{ S_{1} } \left( C_1 \mapsto C_1 \right) \ll \eta_{2, C_1} \right)
  2. \beta_{ S_{1} } \left( C_1 \mapsto C_1 \right) =      \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1\right\}
  3. \eta_{2,C_1} = \eta (C_2)(C_1) = \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
  4. \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1\right\} \ll \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}      =    \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
  5. \mbox{ran}\left( \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2\right\} \right)  =      \left\{ f_2, g_2\right\}

So we get:

\beta_{S_2} \left( C_2 \mapsto C_2 \right)   =   \left\{ f_2 \mapsto f_2, g_2 \mapsto g_2\right\}

Calculate \beta_{S_2} \left( C_1 \mapsto C_2 \right)

According to the definition: \beta_{S_2} \left( C_1 \mapsto C_2 \right)   = {\beta_{S_2}}^\prime \left( C_1 \mapsto C_2 \right)     \ll  \theta_{S_2} \left( C_1 \mapsto C_2 \right)

Where: {\beta_{S_2}}^\prime \left( C_1 \mapsto C_2 \right)    = \mbox {UNION} \ b \ \cdot \ \left(    b \in \alpha_2       \ |\     \beta_{S_{1}} \left( C_1 \mapsto b \right)       ;     \left(        \mbox{id} \left( \mbox{ran} \left( \beta_{S_{1}} \left( C_1 \mapsto b \right) \right) \right)           \ll       \eta_{2,b}    \right) \right)

And: \theta_{S_2} \left( C_1 \mapsto C_2 \right)      =   \mbox {UNION} \ b \ \cdot \ \left(    b \in \alpha_2       \ |\     \beta_{S_{1}} \left( C_1 \mapsto b \right)       ;     \left(        \mbox{id} \left( \mbox{ran} \left( \beta_{S_1} \left( C_1 \mapsto b \right) \right) \right)           \ll       \eta_{2,b}    \right)    \triangleright \sigma_{2,b} \right)

Here are the steps taken to compute the part:

  1. \beta_{S_{1}} \left( C_1 \mapsto C_1 \right)       ;     \left(        \mbox{id} \left( \mbox{ran} \left( \beta_{S_{1}} \left( C_1 \mapsto C_1 \right) \right) \right)           \ll       \eta_{2,C_1}    \right)
    1. \mbox{id} \left( \mbox{ran} \left( \beta_{S_{1}} \left( C_1 \mapsto C_1 \right) \right) \right)      =    \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\}
    2. \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\} \ll \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}      =   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
    3. \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\} \,;\, \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}     =   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
    4. {\beta_{S_2}}^\prime \left( C_1 \mapsto C_2 \right)    =   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
  2. \beta_{S_1} \left( C_1 \mapsto C_1 \right)       ;     \left(        \mbox{id} \left( \mbox{ran} \left( \beta_{S_1} \left( C_1 \mapsto C_1 \right) \right) \right)           \ll       \eta_{2,C_1}    \right)    \triangleright \sigma_{2,C_1}
    1. \sigma_{2,C_1} = \emptyset
    2. \mbox{id} \left( \mbox{ran} \left( \beta_{S_1} \left( C_1 \mapsto C_1 \right) \right) \right)      \ll   \emptyset       =    \emptyset
    3. \beta_{S_1} \left( C_1 \mapsto C_1 \right)       ;    \emptyset       =    \emptyset
    4. \theta_{S_2} \left( C_1 \mapsto C_2 \right) = \emptyset
  3. \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\} \ll \emptyset      =    \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}

So we get:

\beta_{S_2} \left( C_1 \mapsto C_2 \right)   = \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}

Putting the parts together:

We can know show the complete total function:

\beta_{S_2} = \{

\left( C_1 \mapsto C_1 \right) \mapsto \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\},

\left( C_1 \mapsto C_2 \right) \mapsto \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\},

\left( C_2 \mapsto C_1 \right) \mapsto \emptyset,

\left( C_2 \mapsto C_2 \right) \mapsto \left\{ f_2 \mapsto f_2, g_2 \mapsto g_2 \right\} \ \}

Calculating \beta_{S_3}

We will not show the complete construction of \beta_{S_3} but restrict our self to the most interesting parts.

Calculate \beta_{S_3} \left( C_1 \mapsto C_3 \right)

According to the definition: \beta_{S_3} \left( C_1 \mapsto C_3 \right)   = {\beta_{S_3}}^\prime \left( C_1 \mapsto C_3 \right)     \ll  \theta_{S_3} \left( C_1 \mapsto C_3 \right)

Where: {\beta_{S_3}}^\prime \left( C_1 \mapsto C_3 \right)    =  \mbox {UNION} \ b \ \cdot \ \left(    b \in \alpha_3       \ |\     \beta_{S_{2}} \left( C_1 \mapsto b \right)       ;     \left(        \mbox{id} \left( \mbox{ran} \left( \beta_{S_{2}} \left( C_1 \mapsto b \right) \right) \right)           \ll       \eta_{3,b}    \right) \right)

And: \theta_{S_3} \left( C_1 \mapsto C_3 \right)     =  \mbox {UNION} \ b \ \cdot \ \left(    b \in \alpha_3       \ |\     \beta_{S_{2}} \left( C_1 \mapsto b \right)       ;     \left(        \mbox{id} \left( \mbox{ran} \left( \beta_{S_{2}} \left( C_1 \mapsto b \right) \right) \right)           \ll       \eta_{3,b}    \right)    \triangleright \sigma_{3,b} \right)

Note that we can omit \eta_{3,b}\, from the formulas since it is always empty.

  1. \beta_{S_2} \left( C_1 \mapsto C_2 \right)       ;     \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_2 \right) \right) \right)    \ \cup \      \beta_{S_2} \left( C_1 \mapsto C_1 \right)       ;     \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_1 \right) \right) \right)
    1. \beta_{S_{2}} \left( C_1 \mapsto C_2 \right)       =     \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
    2. \mbox{id}\left(\mbox{ran}\left( \beta_{S_{2}} \left( C_1 \mapsto C_2 \right) \right)\right)       =    \left\{ f_2 \mapsto f_2, g_2 \mapsto g_2 \right\}
    3. \beta_{S_2} \left( C_1 \mapsto C_2 \right)     ;    \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_2 \right) \right) \right)     =   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
    4. \beta_{S_{2}} \left( C_1 \mapsto C_1 \right)       =     \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\}
    5. \mbox{id}\left(\mbox{ran}\left( \beta_{S_{2}} \left( C_1 \mapsto C_1 \right) \right)\right)       =    \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\}
    6. \beta_{S_2} \left( C_1 \mapsto C_1 \right)     ;    \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_1 \right) \right) \right)     =   \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\}
    7. \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}    \ \cup\    \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\}      =   \left\{ f_1 \mapsto f_1, f_1 \mapsto f_2, g_1 \mapsto g_1, g_1 \mapsto g_2 \right\}
  2. \beta_{S_2} \left( C_1 \mapsto C_2 \right)       ;     \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_2 \right) \right) \right)       \ \triangleright\      \sigma_{3,C_2}    \ \cup \      \beta_{S_2} \left( C_1 \mapsto C_1 \right)       ;     \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_1 \right) \right) \right)        \ \triangleright\      \sigma_{3,C_1}
    1. \sigma_{3,C_2} = \sigma \left(C_3 \right) \left(C_2\right) = \left\{ f_2 \right\}
    2. \sigma_{3,C_1} = \sigma \left(C_3 \right) \left(C_1\right) = \left\{ g_1 \right\}
    3. \beta_{S_2} \left( C_1 \mapsto C_2 \right)       ;     \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_2 \right) \right) \right)       \ \triangleright\      \sigma_{3,C_2}       =    \left\{ f_1 \mapsto f_2 \right\}
    4. \beta_{S_2} \left( C_1 \mapsto C_1 \right)       ;     \mbox{id} \left( \mbox{ran} \left( \beta_{S_2} \left( C_1 \mapsto C_1 \right) \right) \right)       \ \triangleright\      \sigma_{3,C_1}       =    \left\{ g_1 \mapsto g_1 \right\}
    5. \left\{ f_1 \mapsto f_2 \right\} \ \cup \ \left\{ g_1 \mapsto g_1 \right\}       =     \left\{ f_1 \mapsto f_2, g_1 \mapsto g_1 \right\}
    6. \left\{ f_1 \mapsto f_1, f_1 \mapsto f_2, g_1 \mapsto g_1, g_1 \mapsto g_2 \right\}      \ll   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_1 \right\}     =   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_1 \right\}

So we get:

\beta_{S_3} \left( C_1 \mapsto C_3 \right)   =   \left\{ f_1 \mapsto f_2, g_1 \mapsto g_1 \right\}

The complete naming function

\beta_{S_3} = \{

\left( C_1 \mapsto C_1 \right) \mapsto \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\},

\left( C_1 \mapsto C_2 \right) \mapsto \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\},

\left( C_2 \mapsto C_1 \right) \mapsto \emptyset,

\left( C_2 \mapsto C_2 \right) \mapsto \left\{ f_2 \mapsto f_2, g_2 \mapsto g_2 \right\},

\left( C_1 \mapsto C_3 \right) \mapsto \left\{ f_1 \mapsto f_2, g_1 \mapsto g_1 \right\},

\left( C_2 \mapsto C_3 \right) \mapsto \left\{ f_2 \mapsto f_2, g_2 \mapsto g_2 \right\},

\left( C_3 \mapsto C_3 \right)        \mapsto     \left\{  f_1 \mapsto f_1, g_1 \mapsto g_1, f_2 \mapsto f_2, g_2 \mapsto g_2 \right\},

\left( C_3 \mapsto C_1 \right) \mapsto \emptyset,

\left( C_3 \mapsto C_2 \right) \mapsto \emptyset  \ \}


The dynamic binding function

To calculate the dynamic binding function, we need to get \delta_{S_3}. We will again calculate it incrementally:

Calculating \delta_{S_1}

According to the definition:

\delta_{S_1} \left( C_1 \mapsto C_1 \right)   = \beta_S \left( C_1 \mapsto C_1 \right) ; \left( \left( \mbox {UNION} \, b \cdot \left(     b \in \alpha_1       \, |\,      \left( \beta_S \left( b \mapsto b \right) ; \eta_{1,b} \right)^{-1}       ;     \delta_{S_0}\left( b \mapsto b \right)\right)  \right) \ll \tau_1 \right)

Since \alpha_1\, is empty this simplifies to: \delta_{S_1} \left( C_1 \mapsto C_1 \right)   = \beta_S \left( C_1 \mapsto C_1 \right) ; \tau_1   = \left\{ f_1 \mapsto f_1, g_1 \mapsto g_1 \right\}    ; \left\{ f_1 \mapsto \underline{C_1.f_1}, g_1 \mapsto \underline{C_1.g_1} \right\}

So we get: \delta_{S_1}   = \left\{ \left( C_1 \mapsto C_1 \right) \mapsto    \left\{ f_1 \mapsto \underline{C_1.f_1}, g_1 \mapsto \underline{C_1.g_1} \right\} \right\}

Calculating \delta_{S_2}

Again we calculate the different parts of the function in separate sections:

Calculate \delta_{S_2}\left( C_1 \mapsto C_1 \right)

According to the definition: \delta_{S_2}\left( C_1 \mapsto C_1 \right) =     \delta_{S_1}\left( C_1 \mapsto C_1 \right) =         \left\{ f_1 \mapsto \underline{C_1.f_1}, g_1 \mapsto \underline{C_1.g_1} \right\}

Calculate \delta_{S_2}\left( C_2 \mapsto C_1 \right)

According to the definition: \delta_{S_2}\left( C_1 \mapsto C_1 \right) = \emptyset

Calculate \delta_{S_2}\left( C_2 \mapsto C_2 \right)

According to the definition:

\delta_{S_2}\left( C_2 \mapsto C_2 \right)      =  \beta_S \left( C_2 \mapsto C_2 \right) ; \left( \left( \mbox {UNION} \, b \cdot \left(     b \in \alpha_2       \, |\,      \left( \beta_S \left( b \mapsto b \right) ; \eta_{2,b} \right)^{-1}       ;     \delta_{S_1}\left( b \mapsto b \right)\right)  \right) \ll \tau_2 \right)

  1. \mbox {UNION} \, b \cdot \left(b \in \left\{ C_1 \right\}       \, |\,      \left( \beta_S \left( b \mapsto b \right) ; \eta_{2,b} \right)^{-1}       ;     \delta_{S_1}\left( b \mapsto b \right)\right)     =     \left( \beta_S \left( C_1 \mapsto C_1 \right) ; \eta_{2,C_1} \right)^{-1}       ;     \delta_{S_1}\left( C_1 \mapsto C_1 \right)
    1. \beta_S \left( C_1 \mapsto C_1 \right) ; \eta_{2,C_1}     =     \left\{ f_1 \mapsto f_2, g_1 \mapsto g_2 \right\}
    2. \left( \beta_S \left( C_1 \mapsto C_1 \right) ; \eta_{2,C_1} \right)^{-1}     =     \left\{ f_2 \mapsto f_1, g_2 \mapsto g_1 \right\}
    3. \left( \beta_S \left( C_1 \mapsto C_1 \right) ; \eta_{2,C_1} \right)^{-1}       ;    \delta_{S_1}\left( C_1 \mapsto C_1 \right)     =    \left\{ f_2 \mapsto \underline{C_1.f_1}, g_2 \mapsto \underline{C_1.g_1} \right\}
  2. \tau_2 = \tau \left( C_2 \right)      =   \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\}
  3. \left\{ f_2 \mapsto \underline{C_1.f_1}, g_2 \mapsto \underline{C_1.g_1} \right\}     \ll   \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\}     =   \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\}

So we get: \delta_{S_2}\left( C_2 \mapsto C_2 \right)     =   \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\}

Calculate \delta_{S_2}\left( C_1 \mapsto C_2 \right)

According to the definition:

\delta_{S_2}\left( C_1 \mapsto C_2 \right)      =  \beta_S \left( C_1 \mapsto C_2 \right) ; \left( \left( \mbox {UNION} \, b \cdot \left(     b \in \alpha_2       \, |\,      \left( \beta_S \left( b \mapsto b \right) ; \eta_{2,b} \right)^{-1}       ;     \delta_{S_{1}}\left( b \mapsto b \right)\right)  \right) \ll \tau_{2} \right)

At this stage it should be clear how to calculate this, so we just give the result:

\delta_{S_2}\left( C_1 \mapsto C_2 \right)      =    \left\{ f_1 \mapsto \underline{C_2.f_2}, g_1 \mapsto \underline{C_2.g_2} \right\}

Putting the parts together:

We can know show the complete total function:

\delta_{S_2} = \{

\left( C_1 \mapsto C_1 \right)        \mapsto     \left\{ f_1 \mapsto \underline{C_1.f_1}, g_1 \mapsto \underline{C_1.g_1} \right\},

\left( C_1 \mapsto C_2 \right)        \mapsto     \left\{ f_1 \mapsto \underline{C_2.f_2}, g_1 \mapsto \underline{C_2.g_2} \right\},

\left( C_2 \mapsto C_1 \right) \mapsto \emptyset,

\left( C_2 \mapsto C_2 \right)        \mapsto      \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\} \ \}

Calculating \delta_{S_3}

There is nothing new for this calculation so we just present the result:

\delta_{S_3} = \{

\left( C_1 \mapsto C_1 \right)        \mapsto     \left\{ f_1 \mapsto \underline{C_1.f_1}, g_1 \mapsto \underline{C_1.g_1} \right\},

\left( C_1 \mapsto C_2 \right)        \mapsto     \left\{ f_1 \mapsto \underline{C_2.f_2}, g_1 \mapsto \underline{C_2.g_2} \right\},

\left( C_2 \mapsto C_1 \right) \mapsto \emptyset,

\left( C_2 \mapsto C_2 \right)        \mapsto      \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\},

\left( C_1 \mapsto C_3 \right)      \mapsto    \left\{ f_1 \mapsto \underline{C_2.f_2}, g_1 \mapsto \underline{C_3.g_1} \right\},

\left( C_2 \mapsto C_3 \right)      \mapsto    \left\{ f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\},

\left( C_3 \mapsto C_3 \right)        \mapsto     \left\{ f_1 \mapsto \underline{C_3.f_1}, g_1 \mapsto \underline{C_3.g_1},            f_2 \mapsto \underline{C_2.f_2}, g_2 \mapsto \underline{C_2.g_2} \right\},

\left( C_3 \mapsto C_1 \right) \mapsto \emptyset,

\left( C_3 \mapsto C_2 \right) \mapsto \emptyset  \ \}

Deriving the dynamic binding function

The function is now given. We evaluate it at two interesting points:

  • \delta\left( C_1 \mapsto f_1 \right)     =   \left\{     C_1 \mapsto \underline{C_1.f_1}, C_2 \mapsto \underline{C_2.f_2}, C_3 \mapsto \underline{C_2.f_2}   \right\}
  • \delta\left( C_1 \mapsto f_g \right)     =   \left\{     C_1 \mapsto \underline{C_1.f_g}, C_2 \mapsto \underline{C_2.g_2}, C_3 \mapsto \underline{C_2.g_1}   \right\}