Example Lneed


Automated Proving Correctness of Transformations for the Program Calculus Lneed
The calculus Lneed is a minimalistic call-by-need lambda calculus with letrec. The calculus and program transformations are modeled in the LRSX Tool by the following input files:

  • Description of the calculus (standard reductions and meta transformations): LNEED.inp
  • Overlap commands to compute answer and forking diagrams: lneed_fork.inp
  • Overlap commands to compute answer and commuting diagrams (i.e. forking diagrams for the reversed transformations): lneed_commute.inp

Some exemplary calls of the LRSX Tool are:

  • compute forking and answer diagrams and write them into file output with full proofs:

    lrsx join proofs bound=12 lneed_fork.inp > output_proofs

  • compute forking and answer diagrams and write them into file output in long format:

    lrsx join proofs bound=12 lneed_fork.inp > output.long

  • convert diagrams from long into short format, where the input is in file output.long and the output is written into output_short:

    lrsx convert long short output.long > output_short

  • compute commuting and answer diagrams and write them into file output in long format:

    lrsx join proofs bound=12 lneed_commute.inp > output.long

  • convert the commuting diagrams in file output.long into a TRS:

    lrsx convert long trs output.long > output_trs

  • perform the induction on diagrams in input.long where atppath contains AProVE and CeTA, the TRSs are written to outpath, termination proofs are written to proofs:

    lrsx induct atp-path=atppath output-to=outpath input.long > proofs
Output of the LRSX Tool
Contact
David Sabel
(c) 2016 Dr. David Sabel, Last modified: $Author: sabel $, $Date: 2017/02/17 14:58:39 $