All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aima.core.logic.fol.inference.proof.ProofStepBwChGoal Maven / Gradle / Ivy

Go to download

AIMA-Java Core Algorithms from the book Artificial Intelligence a Modern Approach 3rd Ed.

The newest version!
package aima.core.logic.fol.inference.proof;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import aima.core.logic.fol.kb.data.Clause;
import aima.core.logic.fol.kb.data.Literal;
import aima.core.logic.fol.parsing.ast.Term;
import aima.core.logic.fol.parsing.ast.Variable;

/**
 * @author Ciaran O'Reilly
 * 
 */
public class ProofStepBwChGoal extends AbstractProofStep {
	//
	private List predecessors = new ArrayList();
	//
	private Clause toProve = null;
	private Literal currentGoal = null;
	private Map bindings = new LinkedHashMap();

	public ProofStepBwChGoal(Clause toProve, Literal currentGoal,
			Map bindings) {
		this.toProve = toProve;
		this.currentGoal = currentGoal;
		this.bindings.putAll(bindings);
	}

	public Map getBindings() {
		return bindings;
	}

	public void setPredecessor(ProofStep predecessor) {
		predecessors.clear();
		predecessors.add(predecessor);
	}

	//
	// START-ProofStep
	@Override
	public List getPredecessorSteps() {
		return Collections.unmodifiableList(predecessors);
	}

	@Override
	public String getProof() {
		StringBuilder sb = new StringBuilder();
		List nLits = toProve.getNegativeLiterals();
		for (int i = 0; i < toProve.getNumberNegativeLiterals(); i++) {
			sb.append(nLits.get(i).getAtomicSentence());
			if (i != (toProve.getNumberNegativeLiterals() - 1)) {
				sb.append(" AND ");
			}
		}
		if (toProve.getNumberNegativeLiterals() > 0) {
			sb.append(" => ");
		}
		sb.append(toProve.getPositiveLiterals().get(0));
		return sb.toString();
	}

	@Override
	public String getJustification() {
		return "Current Goal " + currentGoal.getAtomicSentence().toString()
				+ ", " + bindings;
	}
	// END-ProofStep
	//
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy