Run abc on an aignet, without using state
(aignet-run-abc-core input-aignet output-aignet frames script &key script-filename input-filename output-filename ctrex-filename (force-status 'nil) (quiet 'nil)) → (mv status new-output-aignet new-frames)
This function dumps the input aignet into a specified aiger file
given as
This function does not make any modifications to the given ABC script and
does not attempt to ensure that it makes sense. For example, if
print_status write_ctrex ctrex-filename
If
&w output-filename
This function is not axiomatized in any way, because it could be used for at least four different applications, which would make sense to axiomatize differently:
See abc-example-scripts for some scripts that do these things.
Function:
(defun aignet-run-abc-core-fn (input-aignet output-aignet frames script script-filename input-filename output-filename ctrex-filename force-status quiet) (declare (xargs :stobjs (input-aignet output-aignet frames))) (declare (xargs :guard (and (stringp script) (stringp script-filename) (stringp input-filename) (acl2::maybe-stringp output-filename) (acl2::maybe-stringp ctrex-filename)))) (let ((__function__ 'aignet-run-abc-core)) (declare (ignorable __function__)) (with-local-state (mv-let (status output-aignet frames state) (aignet-run-abc-core-st input-aignet output-aignet frames script :script-filename script-filename :input-filename input-filename :output-filename output-filename :ctrex-filename ctrex-filename :force-status force-status :quiet quiet) (mv status output-aignet frames)))))
Theorem:
(defthm frames-ncols-of-aignet-run-abc-core-logic-when-refuted (b* (((mv ?status ?new-output-aignet ?new-frames) (aignet-run-abc-core-fn input-aignet output-aignet frames script script-filename input-filename output-filename ctrex-filename force-status quiet))) (implies (and (equal status :refuted) ctrex-filename) (equal (stobjs::2darr->ncols new-frames) (num-ins input-aignet)))))