[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rewrite rule for expressions inside LAMBDA



Ordinary rewrites don't rewrite under bound variables, but
auto-rewrites do.   So:

them1 :  

  |-------
{1}   FORALL (pi: LTLlib[State].Path):
        (G(LAMBDA (st: State): st`submod_inst`inp)(pi))

Rule? (skosimp)
Skolemizing and flattening,
this simplifies to: 
them1 :  

  |-------
{1}   (G(LAMBDA (st: State): st`submod_inst`inp)(pi!1))

Rule? (auto-rewrite "conninput")
Installing rewrite rule conninput
Installing automatic rewrites from: 
  conninput
this simplifies to: 
them1 :  

  |-------
[1]   (G(LAMBDA (st: State): st`submod_inst`inp)(pi!1))

Rule? (assert)
conninput rewrites st`submod_inst`inp
  to st`mainin
Simplifying, rewriting, and recording with decision procedures,
this simplifies to: 
them1 :  

  |-------
{1}   (G(LAMBDA (st: State): st`mainin)(pi!1))

Rule? 


Note that I had to reverse the direction of conninput:

  conninput : AXIOM (
    FORALL (st: State) :
      st`submod_inst`inp = st`mainin
  )


John Rushby