Fud searchers

Code commentary on the implementation of Tractable and Practicable Inducers/Python Implementation/Fud searchers

Sections

Excluded-self maximum-roll-by-derived-dimension highest-layer layerer

Excluded-self maximum-roll-by-derived-dimension highest-layer layerer

The highest-layer excluded-self maximum-roll-by-derived-dimension layerer $I_{P,U,\mathrm{L,mm,xs,d}} \in \mathrm{computers}$ is defined such that the application is (Text) \[ \begin{eqnarray} I_{P,U,\mathrm{L,mm,xs,d}}^{ * }((V,A,A_R,f)) = \mathrm{layer}(V,U,\emptyset,\emptyset,A,A_R,f,1) \end{eqnarray} \] and \[ \begin{eqnarray} &&\mathrm{layer}(V,U,F,M,X,X_R,f,l) = \\ &&\hspace{1em}\mathrm{if}((l \leq \mathrm{lmax}) \wedge (H \neq \emptyset) \wedge (M \neq \emptyset \implies \mathrm{maxr}(M’)>\mathrm{maxr}(M)),\\ &&\hspace{4em}\mathrm{layer}(V,U’,F \cup H,M’,X’,X’_R,f,l+1),\\ &&\hspace{4em}(U,F,M)) :\\ &&\hspace{2em}L = \{(b,(T,(w, \mathrm{ran}(I)))) : \\ &&\hspace{4em}((\cdot,I),b) \in \mathrm{order}(D_{\mathrm{L}},\{(v,I) : \\ &&\hspace{6em}Q \in I_{P,U,\mathrm{B}}^{ * }((V,F,X,X_R)),\\ &&\hspace{6em}P \in I_{P,U,\mathrm{K},\mathrm{mm}}^{ * }(Q),~N \in I_{P,U,\mathrm{R,mr}}^{ * }(P),\\ &&\hspace{6em}(v,I) \in N,~|\mathrm{ran}(I)|<|I|\}),\\ &&\hspace{4em}w=(f,l,b),~T = (\{S \cup \{(w,k)\} : (S,k) \in I\},\{w\})\},\\ &&\hspace{2em}L’ = \{(i,(T,(w,W))) : (i,(T,(w,W))) \in L, \\ &&\hspace{4em}\forall (i’,(T’,(w’,W’))) \in L~(i>i’ \implies T^{\mathrm{P}} \neq T^{‘\mathrm{P}})\},\\ &&\hspace{2em}H = \mathrm{dom}(\mathrm{set}(L’)),~U’ = U \cup \mathrm{ran}(\mathrm{set}(L’)),\\ &&\hspace{2em}X’ = I_{\mathrm{ * X}}^{ * }((H,X)),~X’_R = I_{\mathrm{ * X}}^{ * }((H,X_R)),\\ &&\hspace{2em}M’ = I_{P,U’,\mathrm{D,d}}^{ * }((V,F \cup H,X’,X’_R)) \end{eqnarray} \]

The layerer is defined in module AlignmentPracticable,

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

as

def parametersSystemsLayererMaxRollByMExcludedSelfHighest(wmax,lmax,xmax,omax,bmax,mmax,umax,pmax,uu,vv,aa,aarr,f):
    ...
    def buildfftup(uu,vv,ff,xx,xxrr):
        return parametersSystemsBuilderTupleNoSumlayerMultiEffective(xmax,omax,bmax,mmax,uu,vv,ff,xx,xxrr)
    def parter(uu,kk,bb,bbrr,y1):
        return parametersSystemsPartitionerMaxRollByM(mmax,umax,pmax,uu,kk,bb,bbrr,y1)
    def roller(qq):
        return parametersRoller(1,qq)
    def buildffdervar(uu,vv,ff,xx,xxrr):
        return sdict([(kk,a) for ((kk,_,_),a) in parametersSystemsBuilderDerivedVarsHighestNoSumlayer(wmax,omax,uu,vv,ff,xx,xxrr).items()])
    def layer(vv,uu,ff,mm,xx,xxrr,f,l):
        jj = []
        for ((kk,bb,bbrr),y1) in buildfftup(uu,vv,ff,xx,xxrr):
            for pp in parter(uu,kk,bb,bbrr,y1):
                for nn in roller(sgl(pp)):
                    for ii in nn:
                        if rancd(ii) < domcd(ii):
                            jj.append(ii)
        ll = []
        for (b,ii) in enumerate(jj):
            w = VarPair((VarPair((VarInt(f),VarInt(l))),VarInt(b+1)))
            ww = sset([ValInt(u) for (_,u) in ii])
            tt = trans(unit([sunion(ss,ssgl(w,ValInt(u))) for (ss,u) in ii]),sgl(w))
            ll.append((tt,(w,ww)))
        ll1 = []
        for (tt,(w,ww)) in ll:
            if all([len(ww) != len(ww1) or und(tt) != und(tt1) or ttpp(tt) != ttpp(tt1) for (tt1,(w1,ww1)) in ll if w > w1]):
                ll1.append((tt,(w,ww)))
        hh = qqff(sset([tt for (tt,_) in ll1]))
        uu1 = uunion(uu,lluu([(w,ww) for (_,(w,ww)) in ll1]))
        xx1 = apply(vars(xx),vars(xx)|fvars(hh),fhis(hh),xx)
        xxrr1 = apply(vars(xx),vars(xx)|fvars(hh),fhis(hh),xxrr)
        gg = funion(ff,hh)
        mm1 = buildffdervar(uu1,vv,gg,xx1,xxrr1)
        if l <= lmax and len(hh) > 0 and (len(mm) == 0 or maxr(mm1) > maxr(mm)):
            return layer(vv,uu1,gg,mm1,xx1,xxrr1,f,l+1)
        return (uu,ff,mm) 
    if wmax < 0 or lmax < 0 or xmax < 0 or omax < 0 or bmax < 0 or mmax < 1 or umax < 0 or pmax < 0:
        return None
    if not (vars(aa).issubset(uvars(uu)) and vars(aa) == vars(aarr) and vv.issubset(vars(aa))):
        return None
    return layer(vv,uu,fudEmpty(),sdict(),aa,aarr,f,1)

For example,

def layerermmxs(aa,aarr,lmax,xmax,omax,bmax,mmax,umax,pmax):
    return parametersSystemsLayererMaxRollByMExcludedSelfHighest(xmax,lmax,xmax,omax,bmax,mmax,umax,pmax,sys(aa),vars(aa),aa,aarr,1)[1]

aa = resize(90,regpivot(3,3))

layerermmxs(aa,ind(aa),3,3**3,2,2,2,3**2,1)
# {({({(1,1),(3,1),(<<1,1>,1>,0)},1%1),({(1,1),(3,2),(<<1,1>,1>,1)},1%1),({(1,1),(3,3),(<<1,1>,1>,1)},1%1),({(1,2),(3,1),(<<1,1>,1>,1)},1%1),({(1,2),(3,2),(<<1,1>,1>,1)},1%1),({(1,2),(3,3),(<<1,1>,1>,1)},1%1),({(1,3),(3,1),(<<1,1>,1>,1)},1%1),({(1,3),(3,2),(<<1,1>,1>,1)},1%1),({(1,3),(3,3),(<<1,1>,1>,1)},1%1)},{<<1,1>,1>}),({({(2,1),(<<1,1>,2>,0)},1%1),({(2,2),(<<1,1>,2>,1)},1%1),({(2,3),(<<1,1>,2>,1)},1%1)},{<<1,1>,2>})}

layerermmxs(aa,ind(aa),3,3**3,2,2,2,3**2,2)
# {({({(1,1),(2,1),(<<1,1>,1>,0)},1%1),({(1,1),(2,2),(<<1,1>,1>,1)},1%1),({(1,1),(2,3),(<<1,1>,1>,1)},1%1),({(1,2),(2,1),(<<1,1>,1>,1)},1%1),({(1,2),(2,2),(<<1,1>,1>,1)},1%1),({(1,2),(2,3),(<<1,1>,1>,1)},1%1),({(1,3),(2,1),(<<1,1>,1>,1)},1%1),({(1,3),(2,2),(<<1,1>,1>,1)},1%1),({(1,3),(2,3),(<<1,1>,1>,1)},1%1)},{<<1,1>,1>}),({({(1,1),(3,1),(<<1,1>,3>,0)},1%1),({(1,1),(3,2),(<<1,1>,3>,1)},1%1),({(1,1),(3,3),(<<1,1>,3>,1)},1%1),({(1,2),(3,1),(<<1,1>,3>,1)},1%1),({(1,2),(3,2),(<<1,1>,3>,1)},1%1),({(1,2),(3,3),(<<1,1>,3>,1)},1%1),({(1,3),(3,1),(<<1,1>,3>,1)},1%1),({(1,3),(3,2),(<<1,1>,3>,1)},1%1),({(1,3),(3,3),(<<1,1>,3>,1)},1%1)},{<<1,1>,3>}),({({(2,1),(<<1,1>,4>,0)},1%1),({(2,2),(<<1,1>,4>,1)},1%1),({(2,3),(<<1,1>,4>,1)},1%1)},{<<1,1>,4>}),({({(3,1),(<<1,1>,2>,0)},1%1),({(3,2),(<<1,1>,2>,1)},1%1),({(3,3),(<<1,1>,2>,1)},1%1)},{<<1,1>,2>})}

layerermmxs(aa,ind(aa),5,3**3,3,3,3,3**2,1)
# {({({(1,1),(3,1),(<<1,1>,4>,0)},1%1),({(1,1),(3,2),(<<1,1>,4>,1)},1%1),({(1,1),(3,3),(<<1,1>,4>,1)},1%1),({(1,2),(3,1),(<<1,1>,4>,1)},1%1),({(1,2),(3,2),(<<1,1>,4>,1)},1%1),({(1,2),(3,3),(<<1,1>,4>,1)},1%1),({(1,3),(3,1),(<<1,1>,4>,1)},1%1),({(1,3),(3,2),(<<1,1>,4>,1)},1%1),({(1,3),(3,3),(<<1,1>,4>,1)},1%1)},{<<1,1>,4>}),({({(1,1),(<<1,1>,1>,0)},1%1),({(1,2),(<<1,1>,1>,1)},1%1),({(1,3),(<<1,1>,1>,1)},1%1)},{<<1,1>,1>}),({({(2,1),(<<1,1>,2>,0)},1%1),({(2,2),(<<1,1>,2>,1)},1%1),({(2,3),(<<1,1>,2>,1)},1%1)},{<<1,1>,2>}),({({(3,1),(<<1,1>,3>,0)},1%1),({(3,2),(<<1,1>,3>,1)},1%1),({(3,3),(<<1,1>,3>,1)},1%1)},{<<1,1>,3>})}

layerermmxs(aa,ind(aa),5,3**3,3,3,3,3**2,2)
# {({({(1,1),(2,1),(<<1,1>,4>,0)},1%1),({(1,1),(2,2),(<<1,1>,4>,1)},1%1),({(1,1),(2,3),(<<1,1>,4>,1)},1%1),({(1,2),(2,1),(<<1,1>,4>,1)},1%1),({(1,2),(2,2),(<<1,1>,4>,1)},1%1),({(1,2),(2,3),(<<1,1>,4>,1)},1%1),({(1,3),(2,1),(<<1,1>,4>,1)},1%1),({(1,3),(2,2),(<<1,1>,4>,1)},1%1),({(1,3),(2,3),(<<1,1>,4>,1)},1%1)},{<<1,1>,4>}),({({(1,1),(3,1),(<<1,1>,6>,0)},1%1),({(1,1),(3,2),(<<1,1>,6>,1)},1%1),({(1,1),(3,3),(<<1,1>,6>,1)},1%1),({(1,2),(3,1),(<<1,1>,6>,1)},1%1),({(1,2),(3,2),(<<1,1>,6>,1)},1%1),({(1,2),(3,3),(<<1,1>,6>,1)},1%1),({(1,3),(3,1),(<<1,1>,6>,1)},1%1),({(1,3),(3,2),(<<1,1>,6>,1)},1%1),({(1,3),(3,3),(<<1,1>,6>,1)},1%1)},{<<1,1>,6>}),({({(1,1),(<<1,1>,1>,0)},1%1),({(1,2),(<<1,1>,1>,1)},1%1),({(1,3),(<<1,1>,1>,1)},1%1)},{<<1,1>,1>}),({({(2,1),(<<1,1>,2>,0)},1%1),({(2,2),(<<1,1>,2>,1)},1%1),({(2,3),(<<1,1>,2>,1)},1%1)},{<<1,1>,2>}),({({(3,1),(<<1,1>,3>,0)},1%1),({(3,2),(<<1,1>,3>,1)},1%1),({(3,3),(<<1,1>,3>,1)},1%1)},{<<1,1>,3>})}

top