## Practicable fud decomposition fud

Code commentary on the implementation of Tractable and Practicable Inducers/Python Implementation/Practicable fud decomposition fud

### Sections

Practicable fud decomposition fud

### Practicable fud decomposition fud

The *Practicable fud decomposition fud* function `systemsDecompFudsNullablePracticable`

is defined in module `AlignmentPracticable`

. The implementation expects the *model variables* in the given *fud decomposition* to be of type `VarPair (VarPair (f, _), _)`

, e.g. `<<3,2>,166>`

, which is the case for the *practicable inducers* in the Implementation. The resultant *fud* has an additional *layer* of *derived nullable variables*, e.g. `<<3,n>,1>`

, which have an additional *value* `null`

. If the *nullable variables* are in *children fuds* they also *depend* on a *contingent variable*, e.g. `<<2,c>,1>>`

, which, in turn, *depends* on a *slice variable*, e.g. `<<2,s>,1>`

, and possibly on a parent *slice variable*, e.g. `<<1,s>,2>`

. Both *contingent variables* and *slice variables* have *values* `in`

and `out`

. Note that the `Integer`

argument `g`

allows more than one *nullable layer* to be added to a *fud decomposition*.

```
systemsDecompFudsNullablePracticable :: System -> DecompFud -> Integer -> Maybe Fud
```

```
def systemsDecompFudsNullablePracticable(uu,df,g):
...
```

Note that the *system* for the resultant *fud* may be obtained from `fudsSystemImplied`

,

```
ff = systemsDecompFudsNullablePracticable(uu,df,1)
let uu1 = uunion(uu,fsys(ff))
```