# Aligned Induction

## Derived set maximisers

Code commentary on the implementation of Tractable and Practicable Inducers/Python Implementation/Derived set maximisers

### Sections

No-sum-layer highest-layer limited-derived derived variables set builder

### No-sum-layer highest-layer limited-derived derived variables set builder

Similarly to the tuple builder, some implementations of the highest-layer limited-derived derived variables set builder (Text) may drop the computation of $\mathrm{sumlayer}(F,J)$, especially if the layerer is subject to the excluded-self restriction. The no-sum-layer highest-layer limited-derived derived variables set builder $I_{P,U,\mathrm{D,d,ns}} \in \mathrm{computers}$ is defined in module AlignmentPracticable,

parametersSystemsBuilderDerivedVarsHighestNoSumlayer ::
Integer -> Integer -> System -> Set.Set Variable -> Fud -> Histogram -> Histogram ->
Maybe (Map.Map (Set.Set Variable, Histogram, Histogram) Double)


as

def parametersSystemsBuilderDerivedVarsHighestNoSumlayer(wmax,omax,uu,vv,ff,xx,xxrr):
...
def init(vv):
return sdict([((sgl(w), histogramEmpty(), histogramEmpty()),(0,0,0)) for w in vv])
def final(nn):
return sdict([((kk,aa,bb),a) for ((kk,aa,bb),a) in nn.items() if len(kk) > 1])
def buildd(ww,qq,nn):
pp = sset([kk|sgl(w) for ((kk,_,_),_) in qq.items() for w in (ww-kk)])
mm = sdict()
for jj in pp:
u = vol(uu,jj)
if u <= wmax and fder(depends(ff,jj)) == jj:
bb = red(xx,jj)
bbrr = red(xxrr,jj)
m = len(jj)
a = algn(bb)
b = algn(bbrr)
c = u ** (1.0/m)
mm[(jj, bb, bbrr)] = ((a-b)/c,-b/c,-u)
mm = top(omax,mm)
if len(mm) > 0:
rr = nn.copy()
rr.update(mm)
return buildd(ww,mm,rr)
return final(nn)
if wmax < 0 or omax < 0:
return None
if not (vars(xx).issubset(uvars(uu)) and vars(xx) == vars(xxrr) and vv.issubset(vars(xx))):
return None
if not fvars(ff).issubset(uvars(uu)):
return None
return maxfst(buildd(fvars(ff)-vv,init(fder(ff)),sdict()))


For example,

def buildffdervarns(aa,rr,ff,wmax,omax):
vv = vars(aa)
ww = vv | fvars(ff)
xx = apply(vv,ww,fhis(ff),aa)
xxrr = apply(vv,ww,fhis(ff),rr)
return sset([(kk,a) for ((kk,_,_),a) in  parametersSystemsBuilderDerivedVarsHighestNoSumlayer(wmax,omax,uunion(sys(aa),fsys(ff)),vv,ff,xx,xxrr).items()])


aa = mul(scalar(81),regpivot(3,3))

ff = fudEmpty()
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {({15, 16}, 81.59074711243147)}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,2]])])
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {({15, 16}, 100.84641034011004)}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,3]]),cdtt([3,17],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {({15, 16, 17}, 158.04397361570332)}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,2]]),cdtt([3,17],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {({15, 16, 17}, 184.23221525401473)}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,3]]),cdtt([3,17],[[1,1],[2,2],[3,3]]),cdtt([3,18],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,100)
# {({15, 16, 18}, 158.04397361570332)}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,3]]),cdtt([3,17],[[1,1],[2,2],[3,3]]),cdtt([3,18],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,1)
# {({15, 16, 18}, 158.04397361570332)}

ff = llff([cdtt([1,15],[[1,1],[2,2],[3,3]]),cdtt([2,16],[[1,1],[2,2],[3,3]]),cdtt([15,17],[[1,1],[2,2],[3,3]]),cdtt([16,18],[[1,1],[2,2],[3,3]])])
buildffdervarns(aa,ind(aa),ff,3**3,1)
# {({17, 18}, 81.59074711243147)}


top