
psi: (

  % Default iteration counts
  ndisp = 1
  nopt = 20
  ncasiter = 20
  nbrueckner = 20

  % The basic programs
  input      = "input"
  uinput     = "input --chkptgeom"
  init       = $input
  done       = ("psiclean")
  scfdone    = ()
  ints       = "cints"
  scf        = "cscf"
  localize   = "localize"
  deriv      = "cints --deriv1"
  deriv2     = "cints --deriv2"
  propint    = "cints --oeprop"
  transqt    = "transqt"
  backtransqt = "transqt --backtr"
  cphf        = "cphf"
  response    = "response"
  normco      = "normco"
  oeprop      = "oeprop"
  optking     = "optking"
  stable      = "stable"
  cis         = "cis"
  ugeom       = "ugeom"
  rgeom       = ()
  findif_disp        = "optking --disp_nosymm"
  findif_disp_symm   = "optking --disp_irrep --irrep 1"
  findif_freq_grad   = "optking --freq_grad_nosymm"
  findif_freq_grad_symm   = "optking --freq_grad_irrep --irrep 1"
  findif_next        = "optking --disp_load"
  findif_energy      = "optking --energy_save"
  findif_grad        = "optking --grad_save"
  findif_grad_energy = "optking --grad_energy"
  geomupdate  = ("optking --opt_step")
  dboc        = "dboc"

  % CASSCF specific programs
  casscf     = "detcas"

  % CC specific programs
  ccsort     = "ccsort"
  ccreset    = "ccsort --reset"
  ccenergy   = "ccenergy"
  cctriples  = "cctriples"
  cchbar     = "cchbar"
  cclambda   = "cclambda"
  ccdensity  = "ccdensity"
  cceom      = "cceom"
  ccresponse = "ccresponse"
  ooccman    = "ccman"

  % Determinant CI specific programs
  detci    = "detci"
  clag     = "clag"

  % Determinant CI based Orbital Optimization
  detcasman = "detcasman"
  detcas   = "detcas"

  % MP2-specific programs
  mp2 = "mp2"
  mp2prop    = "mp2 --opdm"
  mp2_direct = "cints --mp2"
  mp2r12 = "mp2r12"
  mp2r12_moints = "cints --mp2r12"

  % -------------------------------- SCF Procedures
  % Procedures for the SCF energy
  SCFEnergy = ($ints $scf)
  SCFRHFEnergy = $SCFEnergy
  SCFROHFEnergy = $SCFEnergy
  SCFUHFEnergy = $SCFEnergy
  SCFTwoConEnergy = $SCFEnergy

  % Procedures for the SCF gradients
  SCFFirst = ($ints $scf $deriv)
  SCFRHFFirst = ($SCFFirst $done)
  SCFROHFFirst = ($SCFFirst $done)
  SCFUHFFirst = ($SCFFirst $done)
  SCFTwoConFirst = ($SCFFirst $done)

  % Procedures for the SCF Second Derivatives
  SCFSecond = ($ints $scf $transqt $deriv2 $propint $cphf)
  SCFRHFSecond = ($SCFSecond $done)
  SCFROHFSecond = ERROR
  SCFUHFSecond = ERROR
  SCFTwoConSecond = ERROR

  % Procedures for the optimizing geometries with SCF gradients
  SCFFirstOpt = (repeat $nopt $SCFFirst $geomupdate end $done)
  SCFRHFFirstOpt  = $SCFFirstOpt
  SCFROHFFirstOpt  = $SCFFirstOpt
  SCFUHFFirstOpt  = $SCFFirstOpt
  SCFTwoConFirstOpt  = $SCFFirstOpt

  % Procedures for optimizing geometries with SCF energies
  SCFEnergyOpt = (repeat $nopt $SCFEnergy $findif_disp_symm 
    repeat NUM_DISP $findif_next $SCFEnergy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  SCFRHFEnergyOpt = $SCFEnergyOpt
  SCFROHFEnergyOpt = $SCFEnergyOpt
  SCFUHFEnergyOpt = $SCFEnergyOpt
  SCFTwoConEnergyOpt = $SCFEnergyOpt

  % Procedures for the finite displacements of SCF gradients
  SCFFirstDisp  = 
    ($findif_disp repeat $ndisp 
     $findif_next $uinput $SCFFirst $findif_grad end $findif_calc $done)
  SCFRHFFirstDisp  = $SCFFirstDisp
  SCFROHFFirstDisp  = $SCFFirstDisp
  SCFUHFFirstDisp  = $SCFFirstDisp
  SCFTwoConFirstDisp  = $SCFFirstDisp

  % Procedures for the SCF Second Derivatives
  SCFSecondFreq = ($ints $scf $transqt $deriv2 $propint $cphf)
  SCFRHFSecondFreq = ($SCFSecondFreq $done)
  SCFROHFSecondFreq = ERROR
  SCFUHFSecondFreq = ERROR
  SCFTwoConSecondFreq = ERROR

  % Procedures for symm freqs via differences of analytic gradients
  SCFFirstSymm_Freq  = 
    ($SCFEnergy $findif_disp_symm repeat NUM_DISP 
     $findif_next $SCFFirst $findif_grad end 
     $findif_freq_grad_symm $done)
  SCFRHFFirstSymm_Freq  = $SCFFirstSymm_Freq
  SCFROHFFirstSymm_Freq  = $SCFFirstSymm_Freq
  SCFUHFFirstSymm_Freq  = $SCFFirstSymm_Freq
  SCFTwoConFirstSymm_Freq  = $SCFFirstSymm_Freq

  % Procedures for freqs via differences of analytic gradients
  SCFFirstFreq  = 
    ($SCFEnergy $findif_disp repeat NUM_DISP 
     $findif_next $uinput $SCFFirst $findif_grad end 
     $findif_freq_grad $done)
  SCFRHFFirstFreq  = $SCFFirstFreq
  SCFROHFFirstFreq  = $SCFFirstFreq
  SCFUHFFirstFreq  = $SCFFirstFreq
  SCFTwoConFirstFreq  = $SCFFirstFreq

  % Testing procedure for optimizing geometries with SCF finite displacements
  SCFROHFEnergyDisp =
    (repeat $ndisp $ugeom $uinput $SCFEnergy $rgeom end $done)

  % Procedure for an SCF linear response calculation
  SCFResponse = ($SCFEnergy $transqt $ccsort $propint $response $done)
  SCFRHFResponse = $SCFResponse
  SCFUHFResponse = ERROR
  SCFROHFResponse = ERROR
  SCFTwoConResponse = ERROR

  % Procedure for an SCF property computation
  SCFEnergyOEPROP = ($SCFEnergy $oeprop $done)
  SCFRHFEnergyOEPROP = ($SCFRHFEnergy $oeprop $done)
  SCFUHFEnergyOEPROP = ERROR
  SCFROHFEnergyOEPROP = ($SCFROHFEnergy $oeprop $done)
  SCFTwoConEnergyOEPROP = ERROR

  % Procedure for an SCF DBOC computation
  SCFDBOC = ($SCFEnergy $dboc)
  SCFRHFDBOC = ($SCFRHFEnergy $dboc)
  SCFROHFDBOC = ($SCFROHFEnergy $dboc)
  SCFUHFDBOC = ($SCFUHFEnergy $dboc)
  SCFTwoConDBOC = ERROR

  % -------------------------------- Direct SCF Procedures
  % Procedures for the Direct SCF energy
  DirectSCFEnergy = ($scf)
  DirectSCFRHFEnergy = ($DirectSCFEnergy $done)
  DirectSCFROHFEnergy = ($DirectSCFEnergy $done)
  DirectSCFUHFEnergy = ($DirectSCFEnergy $done)
  DirectSCFTwoConEnergy = ($DirectSCFEnergy $done)

  % Procedures for the Direct SCF gradients
  DirectSCFFirst = ($scf $deriv)
  DirectSCFRHFFirst = ($DirectSCFFirst $done)
  DirectSCFROHFFirst = ($DirectSCFFirst $done)
  DirectSCFUHFFirst = ($DirectSCFFirst $done)
  DirectSCFTwoConFirst = ($DirectSCFFirst $done)

  % Procedures for the Direct SCF Second Derivatives
  DirectSCFSecond = ($scf $transqt $deriv2 $propint $cphf $done)
  DirectSCFRHFSecond = $DirectSCFSecond
  DirectSCFROHFSecond = ERROR
  DirectSCFUHFSecond = ERROR
  DirectSCFTwoConSecond = ERROR

  % Procedures for the optimizing geometries with Direct SCF gradients
  DirectSCFFirstOpt = (repeat $nopt $DirectSCFFirst $geomupdate end $done)
  DirectSCFRHFFirstOpt  = $DirectSCFFirstOpt
  DirectSCFROHFFirstOpt  = $DirectSCFFirstOpt
  DirectSCFUHFFirstOpt  = $DirectSCFFirstOpt
  DirectSCFTwoConFirstOpt  = $DirectSCFFirstOpt

  % Procedures for optimizing geometries with SCF energies
  DirectSCFEnergyOpt = (repeat $nopt $DirectSCFEnergy $findif_disp_symm 
    repeat NUM_DISP $findif_next $DirectSCFEnergy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  DirectSCFRHFEnergyOpt = $DirectSCFEnergyOpt
  DirectSCFROHFEnergyOpt = $DirectSCFEnergyOpt
  DirectSCFUHFEnergyOpt = $DirectSCFEnergyOpt
  DirectSCFTwoConEnergyOpt = $DirectSCFEnergyOpt

  % Procedures for the finite displacements of SCF gradients
  DirectSCFFirstDisp  = 
    ($findif_disp repeat $ndisp 
     $findif_next $uinput $DirectSCFFirst $findif_grad end $findif_calc $done)
  DirectSCFRHFFirstDisp  = $DirectSCFFirstDisp
  DirectSCFROHFFirstDisp  = $DirectSCFFirstDisp
  DirectSCFUHFFirstDisp  = $DirectSCFFirstDisp
  DirectSCFTwoConFirstDisp  = $DirectSCFFirstDisp

  % Procedures for the SCF Second Derivatives
  DirectSCFSecondFreq = ($scf $transqt $deriv2 $propint $cphf $done)
  DirectSCFRHFSecondFreq = $DirectSCFSecondFreq
  DirectSCFROHFSecondFreq = ERROR
  DirectSCFUHFSecondFreq = ERROR
  DirectSCFTwoConSecondFreq = ERROR

  % Procedures for symm freqs via differences of analytic gradients
  DirectSCFFirstSymm_Freq  = 
    ($scf $findif_disp_symm repeat NUM_DISP 
     $findif_next $DirectSCFFirst $findif_grad end 
     $findif_freq_grad_symm $done)
  DirectSCFRHFFirstSymm_Freq  = $DirectSCFFirstSymm_Freq
  DirectSCFROHFFirstSymm_Freq  = $DirectSCFFirstSymm_Freq
  DirectSCFUHFFirstSymm_Freq  = $DirectSCFFirstSymm_Freq
  DirectSCFTwoConFirstSymm_Freq  = $DirectSCFFirstSymm_Freq

  % Procedures for freqs via differences of analytic gradients
  DirectSCFFirstFreq  = 
    ($DirectSCFEnergy $findif_disp repeat NUM_DISP 
     $findif_next $uinput $DirectSCFFirst $findif_grad end 
     $findif_freq_grad $done)
  DirectSCFRHFFirstFreq  = $DirectSCFFirstFreq
  DirectSCFROHFFirstFreq  = $DirectSCFFirstFreq
  DirectSCFUHFFirstFreq  = $DirectSCFFirstFreq
  DirectSCFTwoConFirstFreq  = $DirectSCFFirstFreq

  % Testing procedure for optimizing geometries with SCF finite displacements
  DirectSCFROHFEnergyDisp =
    (repeat $ndisp $ugeom $uinput $DirectSCFEnergy $rgeom end $done)

  % Procedure for an SCF linear response calculation
  DirectSCFResponse = 
    ($DirectSCFEnergy $transqt $ccsort $propint $response $done)
  DirectSCFRHFResponse = $DirectSCFResponse
  DirectSCFUHFResponse = ERROR
  DirectSCFROHFResponse = ERROR
  DirectSCFTwoConResponse = ERROR

  % Procedure for an SCF property computation
  DirectSCFEnergyOEPROP = ($DirectSCFEnergy $oeprop $done)
  DirectSCFRHFEnergyOEPROP = ($DirectSCFRHFEnergy $oeprop $done)
  DirectSCFUHFEnergyOEPROP = ERROR
  DirectSCFROHFEnergyOEPROP = ($DirectSCFROHFEnergy $oeprop $done)
  DirectSCFTwoConEnergyOEPROP = ERROR

  % -------------------------------- CCSD Procedures
  % Procedures for the CCSD energy
  CCSDEnergy = ($ints $scf $transqt $ccsort $ccenergy)
  CCSDRHFEnergy = ($CCSDEnergy $done)
  CCSDROHFEnergy = ($CCSDEnergy $done)
  CCSDUHFEnergy = ($CCSDEnergy $done)
  CCSDTwoConEnergy = ERROR

  % Procedures for the CCSD gradient
  CCSDFirst = ($CCSDEnergy $cchbar $cclambda $ccdensity $backtransqt $deriv)
  CCSDRHFFirst = $CCSDFirst
  CCSDROHFFirst = $CCSDFirst
  CCSDUHFFirst = $CCSDFirst
  CCSDTwoConFirst = ERROR

  %Procedures for the CCSD gradient with no restart
  CCSDFirstReset = ($ints $scf $transqt $ccreset $ccenergy $cchbar
      $cclambda $ccdensity $backtransqt $deriv)
  CCSDRHFFirstReset = $CCSDFirstReset
  CCSDROHFFirstReset = $CCSDFirstReset
  CCSDUHFFirstReset = $CCSDFirstReset

  % Procedures for optimization via energy points
  CCSDEnergyOpt = (repeat $nopt $CCSDEnergy $findif_disp_symm 
    repeat NUM_DISP $findif_next $CCSDEnergy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  CCSDRHFEnergyOpt = $CCSDEnergyOpt
  CCSDROHFEnergyOpt = $CCSDEnergyOpt
  CCSDUHFEnergyOpt = $CCSDEnergyOpt
  CCSDTwoConEnergyOpt = ERROR

  % Procedures for the optimizing geomtries with CCSD gradients
  CCSDRHFFirstOpt = (repeat $nopt $CCSDRHFFirst $geomupdate end $done)
  CCSDROHFFirstOpt = (repeat $nopt $CCSDROHFFirst $geomupdate end $done)
  CCSDUHFFirstOpt  = (repeat $nopt $CCSDUHFFirst $geomupdate end $done)
  CCSDTwoConFirstOpt  = ERROR

  % Procedures for the finite displacements of CCSD gradients
  CCSDRHFFirstDisp =
    (repeat $ndisp $ugeom $uinput $CCSDRHFFirst $rgeom end $done)
  CCSDROHFFirstDisp = 
    (repeat $ndisp $ugeom $uinput $CCSDROHFFirst $rgeom end $done)
  CCSDUHFFirstDisp  = 
    (repeat $ndisp $ugeom $uinput $CCSDROHFFirst $rgeom end $done)
  CCSDTwoConFirstDisp  = ERROR

  % Procedures for symmetric frequencies via finite differences of gradients
  CCSDFirstSymm_Freq  = 
    ($CCSDEnergy $findif_disp_symm repeat NUM_DISP 
     $findif_next $CCSDFirst $findif_grad end 
     $findif_freq_grad_symm $done)
  CCSDRHFFirstSymm_Freq  = $CCSDFirstSymm_Freq
  CCSDROHFFirstSymm_Freq  = $CCSDFirstSymm_Freq
  CCSDUHFFirstSymm_Freq  = $CCSDFirstSymm_Freq
  CCSDTwoConFirstSymm_Freq  = $CCSDFirstSymm_Freq

  % Procedures for freqs via differences of analytic gradients
  CCSDFirstFreq  = 
    ($CCSDEnergy $findif_disp repeat NUM_DISP 
     $findif_next $uinput $CCSDFirstReset $findif_grad end 
     $findif_freq_grad $done)
  CCSDRHFFirstFreq  = $CCSDFirstFreq
  CCSDROHFFirstFreq  = $CCSDFirstFreq
  CCSDUHFFirstFreq  = $CCSDFirstFreq
  CCSDTwoConFirstFreq  = $CCSDFirstFreq

  % Procedure for an CCSD linear response calculation
  CCSDResponse = ($CCSDEnergy $cchbar $cclambda $propint $ccresponse $done)
  CCSDRHFResponse = $CCSDResponse
  CCSDUHFResponse = ERROR
  CCSDROHFResponse = ERROR
  CCSDTwoConResponse = ERROR

  % Procedure for an CCSD one-electron property computation
  CCSDFirstOEPROP = ($CCSDEnergy $cchbar $cclambda $ccdensity $oeprop $done)
  CCSDRHFFirstOEPROP = $CCSDFirstOEPROP
  CCSDUHFFirstOEPROP = ERROR
  CCSDROHFFirstOEPROP = ERROR
  CCSDTwoConFirstOEPROP = ERROR

  % -------------------------------- CCSD(T) Procedures
  % Procedures for the CCSD(T) energy
  CCSD_TEnergy = ($ints $scf $transqt $ccsort $ccenergy $cctriples)
  CCSD_TRHFEnergy = ($CCSD_TEnergy $done)
  CCSD_TROHFEnergy = ERROR
  CCSD_TUHFEnergy = ($CCSD_TEnergy $done)
  CCSD_TTwoConEnergy = ERROR

  % Procedures for the CCSD(T) gradient
  CCSD_TFirst = ERROR
  CCSD_TRHFFirst = ERROR
  CCSD_TROHFFirst = ERROR
  CCSD_TUHFFirst = ERROR
  CCSD_TTwoConFirst = ERROR

  % Procedures for optimization via energy points
  CCSD_TEnergyOpt = (repeat $nopt $CCSD_TEnergy $findif_disp_symm 
    repeat NUM_DISP $findif_next $CCSD_TEnergy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  CCSD_TRHFEnergyOpt = $CCSD_TEnergyOpt
  CCSD_TROHFEnergyOpt = $CCSD_TEnergyOpt
  CCSD_TUHFEnergyOpt = $CCSD_TEnergyOpt
  CCSD_TTwoConEnergyOpt = ERROR

  % Procedures for the optimizing geomtries with CCSD(T) gradients
  CCSD_TRHFFirstOpt = ERROR
  CCSD_TROHFFirstOpt = ERROR
  CCSD_TUHFFirstOpt  = ERROR
  CCSD_TTwoConFirstOpt  = ERROR

  % Procedures for the finite displacements of CCSD(T) gradients
  CCSD_TRHFFirstDisp = ERROR
  CCSD_TROHFFirstDisp = ERROR
  CCSD_TUHFFirstDisp  = ERROR
  CCSD_TTwoConFirstDisp  = ERROR

  % Procedure for the EOM_CCSD energy
  EOM_CCSDEnergy = ($ints $scf $transqt $ccsort $ccenergy $cchbar $cceom)
  EOM_CCSDRHFEnergy = ($EOM_CCSDEnergy $done)
  EOM_CCSDROHFEnergy = ($EOM_CCSDEnergy $done) 
  EOM_CCSDUHFEnergy = ($EOM_CCSDEnergy $done) 
  EOM_CCSDTwoConEnergy = ERROR

  % Procedure for the LEOM_CCSD energy
  LEOM_CCSDEnergy =($ints $scf $localize $transqt $ccsort $ccenergy
                    $cchbar $cceom )
  LEOM_CCSDRHFEnergy = ($LEOM_CCSDEnergy $done)
  LEOM_CCSDROHFEnergy = ($LEOM_CCSDEnergy $done) 
  LEOM_CCSDUHFEnergy = ERROR
  LEOM_CCSDTwoConEnergy = ERROR

  % -------------------------------- OOCCD Procedures
  % Procedures for the OOCCD energy
  OOCCDRHFEnergy = ($ints $scf $transqt $ooccman $done)
  OOCCDROHFEnergy = ERROR
  OOCCDUHFEnergy = ERROR
  OOCCDTwoConEnergy = ERROR

  % Procedures for the OOCCD gradient
  OOCCDFirst =
    ($ints $scf $transqt $ooccman $backtransqt $oeprop $deriv)
  OOCCDRHFFirst = ($OOCCDFirst $done)
  OOCCDROHFFirst = ERROR
  OOCCDUHFFirst = ERROR
  OOCCDTwoConFirst = ERROR

  % Procedures for the optimizing geomtries with OOCCD gradients
  OOCCDFirstOpt =
    (repeat $nopt $OOCCDFirst $geomupdate end $done)
  OOCCDRHFFirstOpt = $OOCCDFirstOpt
  OOCCDROHFFirstOpt = ERROR
  OOCCDUHFFirstOpt  = ERROR
  OOCCDTwoConFirstOpt  = ERROR

  % Procedures for the finite displacements of OOCCD gradients
  OOCCDFirstDisp  = (repeat $ndisp $ugeom $OOCCDFirst $rgeom end $done)
  OOCCDRHFFirstDisp  = $OOCCDFirstDisp
  OOCCDUHFFirstDisp  = ERROR
  OOCCDROHFFirstDisp  = ERROR
  OOCCDTwoConFirstDisp  = ERROR

  % -------------------------------- BCCD Procedures
  % Procedures for the BCCD energy
  BCCDEnergy = ($ints $scf repeat $nbrueckner $transqt $ccsort $ccenergy end)
  BCCDRHFEnergy = ($BCCDEnergy $done)
  BCCDROHFEnergy = ERROR
  BCCDUHFEnergy = ($BCCDEnergy $done)
  BCCDTwoConEnergy = ERROR

  % -------------------------------- BCCD(T) Procedures
  % Procedures for the BCCD(T) energy
  BCCD_TEnergy = ($ints $scf repeat $nbrueckner $transqt $ccsort $ccenergy end $cctriples)
  BCCD_TRHFEnergy = ($BCCD_TEnergy $done)
  BCCD_TROHFEnergy = ERROR
  BCCD_TUHFEnergy = ($BCCD_TEnergy $done)
  BCCD_TTwoConEnergy = ERROR

  % -------------------------------- DETCI Procedures
  % Procedures for the DETCI energy
  DETCIEnergy = ($ints $scf $transqt $detci)
  DETCIRHFEnergy = ($DETCIEnergy $done)
  DETCIROHFEnergy = ($DETCIEnergy $done)
  DETCIUHFEnergy = ERROR 
  DETCITwoConEnergy = ERROR

  % Procedures for the DETCI gradient: not yet impl, need orb response
  DETCIFirst = ERROR
  DETCIRHFFirst = ERROR
  DETCIROHFFirst = ERROR
  DETCIUHFFirst = ERROR
  DETCITwoConFirst = ERROR

  % Procedures for the optimizing geomtries with DETCI gradients
  DETCIFirstOpt =
    (repeat $nopt $DETCIFirst $geomupdate end $done)
  DETCIRHFFirstOpt = $DETCIFirstOpt
  DETCIROHFFirstOpt = ERROR
  DETCIUHFFirstOpt  = ERROR
  DETCITwoConFirstOpt  = ERROR

  % Procedures for the finite displacements of DETCI gradients
  DETCIFirstDisp  = (repeat $ndisp $ugeom $DETCIFirst $rgeom end $done)
  DETCIRHFFirstDisp  = $DETCIFirstDisp
  DETCIUHFFirstDisp  = ERROR
  DETCIROHFFirstDisp  = ERROR
  DETCITwoConFirstDisp  = ERROR

  % Procedures for displacements of energies
  DETCIEnergyDisp = (repeat $ndisp $ugeom $DETCIEnergy $rgeom end $done)
  DETCIRHFEnergyDisp = $DETCIEnergyDisp
  DETCIROHFEnergyDisp = $DETCIEnergyDisp
  DETCIUHFEnergyDisp = ERROR
  DETCITwoConEnergyDisp = ERROR

  % Procedures for optimization via energy points
  DETCIEnergyOpt = (repeat $nopt $DETCIEnergy $findif_disp_symm 
    repeat NUM_DISP $findif_next $DETCIEnergy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  DETCIRHFEnergyOpt = $DETCIEnergyOpt 
  DETCIROHFEnergyOpt = $DETCIEnergyOpt 
  DETCIUHFEnergyOpt = ERROR
  DETCITwoConEnergyOpt = $DETCIEnergyOpt

  % Procedures for CI DBOC computation
  DETCIDBOC = ($DETCIEnergy $dboc)
  DETCIRHFDBOC = ($DETCIRHFEnergy $dboc)
  DETCIROHFDBOC = ($DETCIROHFEnergy $dboc)
  DETCIUHFDBOC = ($DETCIUHFEnergy $dboc)
  DETCITwoConDBOC = ($DETCITwoConEnergy $dboc)

  % -------------------------------- DETCAS Procedures
  % Procedures for the DETCAS energy
  DETCASEnergy = ($ints $scf $detcasman)
  DETCASRHFEnergy = ($DETCASEnergy $done)
  DETCASROHFEnergy = ($DETCASEnergy $done)
  DETCASUHFEnergy = ERROR
  DETCASTwoConEnergy = ERROR

  % Procedures for the DETCAS gradient
  DETCASFirst = 
  ($ints $scf $detcasman $backtransqt $oeprop $deriv)
  DETCASRHFFirst = ($DETCASFirst $done)
  DETCASROHFFirst = ($DETCASFirst $done)
  DETCASUHFFirst = ERROR
  DETCASTwoConFirst = ERROR

  % Procedures for the optimizing geomtries with DETCAS gradients
  DETCASFirstOpt =
    (repeat $nopt $DETCASFirst $geomupdate end $done)
  DETCASRHFFirstOpt = $DETCASFirstOpt
  DETCASROHFFirstOpt = $DETCASFirstOpt
  DETCASUHFFirstOpt  = ERROR
  DETCASTwoConFirstOpt  = ERROR

  % Procedures for the finite displacements of DETCAS gradients
  DETCASFirstDisp  = (repeat $ndisp $ugeom $DETCASFirst $rgeom end $done)
  DETCASRHFFirstDisp  = $DETCASFirstDisp
  DETCASROHFFirstDisp  = $DETCASFirstDisp
  DETCASUHFFirstDisp  = ERROR
  DETCASTwoConFirstDisp  = ERROR

  % Procedures for optimization via DETCAS energy points
  DETCASEnergyOpt = (repeat $nopt $DETCASEnergy $findif_disp_symm 
    repeat NUM_DISP $findif_next $DETCASEnergy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  DETCASRHFEnergyOpt = $DETCASEnergyOpt
  DETCASROHFEnergyOpt = $DETCASEnergyOpt
  DETCASUHFEnergyOpt = ERROR
  DETCASTwoConEnergyOpt = $DETCASEnergyOpt

  % Procedures for symmetric frequencies via finite differences of gradients
  DETCASFirstSymm_Freq  = 
    ($input $DETCASEnergy $findif_disp_symm repeat NUM_DISP 
     $findif_next $DETCASFirst $findif_grad end 
     $findif_freq_grad_symm $done)
  DETCASRHFFirstSymm_Freq  = $DETCASFirstSymm_Freq
  DETCASROHFFirstSymm_Freq  = $DETCASFirstSymm_Freq
  DETCASUHFFirstSymm_Freq  = $DETCASFirstSymm_Freq
  DETCASTwoConFirstSymm_Freq  = $DETCASFirstSymm_Freq

  % Procedures for frequencies via finite differences of gradients
  DETCASFirstFreq  = 
    ($input $DETCASEnergy $findif_disp repeat NUM_DISP 
     $findif_next $DETCASFirst $findif_grad end 
     $findif_freq_grad $done)
  DETCASRHFFirstFreq  = $DETCASFirstFreq
  DETCASROHFFirstFreq  = $DETCASFirstFreq
  DETCASUHFFirstFreq  = $DETCASFirstFreq
  DETCASTwoConFirstFreq  = $DETCASFirstFreq

  % Procedures for DETCAS DBOC computation
  DETCASDBOC = ($DETCASEnergy $dboc)
  DETCASRHFDBOC = ($DETCASRHFEnergy $dboc)
  DETCASROHFDBOC = ($DETCASROHFEnergy $dboc)
  DETCASUHFDBOC = ($DETCASUHFEnergy $dboc)
  DETCASTwoConDBOC = ($DETCASTwoConEnergy $dboc)

  % Procedures for the conventional MP2 energy
  MP2Energy = ($ints $scf $transqt $ccsort $mp2)
  MP2RHFEnergy = ($MP2Energy $done)
  MP2ROHFEnergy = ERROR
  MP2UHFEnergy = ERROR
  MP2TwoConEnergy = ERROR

  % Procedures for optimization via energy points
  MP2EnergyOpt = (repeat $nopt $MP2Energy $findif_disp_symm 
    repeat NUM_DISP $findif_next $MP2Energy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  MP2RHFEnergyOpt = $MP2EnergyOpt
  MP2ROHFEnergyOpt = ERROR
  MP2UHFEnergyOpt = ERROR
  MP2TwoConEnergyOpt = ERROR
  
  % Procedures for a conventional MP2 one-electron
  % properties calculation
  MP2EnergyOEPROP = ($ints $scf $transqt $ccsort $mp2prop $oeprop)
  MP2RHFEnergyOEPROP = ($MP2EnergyOEPROP $done)
  MP2ROHFEnergyOEPROP = ERROR
  MP2UHFEnergyOEPROP = ERROR
  MP2TwoConEnergyOEPROP = ERROR

  % Procedures for the direct MP2 energy
  DirectMP2Energy = ($ints $scf $mp2_direct)
  DirectMP2RHFEnergy = ($DirectMP2Energy $done)
  DirectMP2ROHFEnergy = ERROR
  DirectMP2UHFEnergy = ERROR
  DirectMP2TwoConEnergy = ERROR

  % Procedures for optimization via MP2 energy points
  MP2EnergyOpt = (repeat $nopt $MP2Energy $findif_disp_symm 
    repeat $ndisp $findif_next $MP2Energy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  MP2RHFEnergyOpt = $MP2EnergyOpt
  MP2ROHFEnergyOpt = ERROR
  MP2UHFEnergyOpt = ERROR
  MP2TwoConEnergyOpt = ERROR

  % Procedures for optimization via DirectMP2 energy points
  DirectMP2EnergyOpt = (repeat $nopt $DirectMP2Energy $findif_disp_symm 
    repeat $ndisp $findif_next $DirectMP2Energy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  DirectMP2RHFEnergyOpt = $DirectMP2EnergyOpt
  DirectMP2ROHFEnergyOpt = ERROR
  DirectMP2UHFEnergyOpt = ERROR
  DirectMP2TwoConEnergyOpt = ERROR


  % Procedures for the MP2-R12 energy (MP2-R12 transformation is always direct)
  MP2R12Energy = ($SCFEnergy $mp2r12_moints $mp2r12)
  MP2R12RHFEnergy = ($MP2R12Energy $done)
  MP2R12ROHFEnergy = ERROR
  MP2R12UHFEnergy = ERROR
  MP2R12TwoConEnergy = ERROR

  % Procedures for the direct MP2-R12 energy
  DirectMP2R12Energy = ($DirectSCFEnergy $mp2r12_moints $mp2r12)
  DirectMP2R12RHFEnergy = ($DirectMP2R12Energy $done)
  DirectMP2R12ROHFEnergy = ERROR
  DirectMP2R12UHFEnergy = ERROR
  DirectMP2R12TwoConEnergy = ERROR

  % Procedures for optimization via MP2-R12 energy points
  MP2R12EnergyOpt = (repeat $nopt $MP2R12Energy $findif_disp_symm 
    repeat $ndisp $findif_next $MP2R12Energy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  MP2R12RHFEnergyOpt = $MP2R12EnergyOpt
  MP2R12ROHFEnergyOpt = ERROR
  MP2R12UHFEnergyOpt = ERROR
  MP2R12TwoConEnergyOpt = ERROR

  % Procedures for optimization via DirectMP2R12 energy points
  DirectMP2R12EnergyOpt = (repeat $nopt $DirectMP2R12Energy $findif_disp_symm 
    repeat $ndisp $findif_next $DirectMP2R12Energy $findif_energy end
    $findif_grad_energy $geomupdate end $done)
  DirectMP2R12RHFEnergyOpt = $DirectMP2R12EnergyOpt
  DirectMP2R12ROHFEnergyOpt = ERROR
  DirectMP2R12UHFEnergyOpt = ERROR
  DirectMP2R12TwoConEnergyOpt = ERROR

  % Procedure for the CIS energy
  CISEnergy = ($ints $scf $transqt $ccsort $cis)
  CISRHFEnergy = ($CISEnergy $done)
  CISROHFEnergy = ERROR
  CISUHFEnergy = ($CISEnergy $done)
  CISTwoConEnergy = ERROR
) 

