Newer
Older
RDLProofSystem / src / main / java / models / terms / meta / MatchConstraint.java
@Sakoda2269 Sakoda2269 26 days ago 1 KB MetaDynamicTerm追加
package models.terms.meta;
import java.util.HashMap;
import java.util.Map;

import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import models.algebra.Variable;
import models.terms.RDLTerm;

@RequiredArgsConstructor
@EqualsAndHashCode
@ToString
public class MatchConstraint {

	private final Map<Variable, RDLTerm> binding;
	private final Map<Variable, OrderVariableConstraint> orderConstraint;
	
	public MatchConstraint(MatchConstraint constraint) {
		this.binding = constraint.getBinding();
		this.orderConstraint = constraint.getOrderConstraint();
	}
	
	public Map<Variable, RDLTerm> getBinding() {
		return new HashMap<>(binding);
	}
	
	public Map<Variable, OrderVariableConstraint> getOrderConstraint() {
		Map<Variable, OrderVariableConstraint> res = new HashMap<>();
		for (var key : orderConstraint.keySet()) {
			res.put(key, (OrderVariableConstraint) orderConstraint.get(key).clone());
		}
		return res;
	}
	
	public static MatchConstraint createDefault() {
		return new MatchConstraint(new HashMap<>(), new HashMap<>());
	}
	
}