package code.instr;

import code.space.Computation;
import code.space.Space;
import code.stuff.Logger;
import code.stuff.Tracer;
import code.term.Term;

/**
 * Replace the top of the pre-redex stack with the register.
 *
 * @author Sergio Antoy
 * @since June 17, 2003
 */

public class Replace implements Instruction {

    private Replace() {}
    public final static Replace singleton = new Replace();

    public void execute(Computation computation) {
        Term term = computation.getTerm();
        Term reduct = Space.instance.current;

        if (Tracer.instruction) {
            Logger.logln(computation.getIdString() +
                    ": Replace: " + term +
                    " with " + reduct);
        }
        if (Tracer.reduction) Tracer.traceRewrite(computation, term, reduct);
        term.update(reduct);
    }

    public String printAsTxtLoadable() { return "Replace"; }
}


