public override HoudiniOutcome PerformHoudiniInference(int stage = 0, IEnumerable <int> completedStages = null, Dictionary <string, bool> initialAssignment = null) { this.NotifyStart(program, houdiniConstants.Count); currentHoudiniState = new HoudiniState(BuildWorkList(program), BuildAssignment(houdiniConstants)); if (initialAssignment != null) { foreach (var v in currentHoudiniState.Assignment.Keys.ToList()) { currentHoudiniState.Assignment[v] = initialAssignment[v.Name]; } } if (refutedSharedAnnotations.Count > 0) { foreach (var v in currentHoudiniState.Assignment.Keys.ToList()) { if (refutedSharedAnnotations.ContainsKey(v.Name)) { currentHoudiniState.Assignment[v] = false; } } } foreach (Implementation impl in vcgenFailures) { currentHoudiniState.addToBlackList(impl.Name); } while (currentHoudiniState.WorkQueue.Count > 0) { this.NotifyIteration(); currentHoudiniState.Implementation = currentHoudiniState.WorkQueue.Peek(); this.NotifyImplementation(currentHoudiniState.Implementation); HoudiniSession session; this.houdiniSessions.TryGetValue(currentHoudiniState.Implementation, out session); HoudiniVerifyCurrent(session, stage, completedStages); } this.NotifyEnd(true); Dictionary <string, bool> assignment = new Dictionary <string, bool>(); foreach (var x in currentHoudiniState.Assignment) { assignment[x.Key.Name] = x.Value; } currentHoudiniState.Outcome.assignment = assignment; return(currentHoudiniState.Outcome); }
public override HoudiniOutcome PerformHoudiniInference(int stage = 0, IEnumerable<int> completedStages = null, Dictionary<string, bool> initialAssignment = null) { this.NotifyStart(program, houdiniConstants.Count); currentHoudiniState = new HoudiniState(BuildWorkList(program), BuildAssignment(houdiniConstants)); if (initialAssignment != null) { foreach (var v in currentHoudiniState.Assignment.Keys.ToList()) { currentHoudiniState.Assignment[v] = initialAssignment[v.Name]; } } if (refutedSharedAnnotations.Count > 0) { foreach (var v in currentHoudiniState.Assignment.Keys.ToList()) { if (refutedSharedAnnotations.ContainsKey(v.Name)) { currentHoudiniState.Assignment[v] = false; } } } foreach (Implementation impl in vcgenFailures) { currentHoudiniState.addToBlackList(impl.Name); } while (currentHoudiniState.WorkQueue.Count > 0) { this.NotifyIteration(); currentHoudiniState.Implementation = currentHoudiniState.WorkQueue.Peek(); this.NotifyImplementation(currentHoudiniState.Implementation); HoudiniSession session; this.houdiniSessions.TryGetValue(currentHoudiniState.Implementation, out session); HoudiniVerifyCurrent(session, stage, completedStages); } this.NotifyEnd(true); Dictionary<string, bool> assignment = new Dictionary<string, bool>(); foreach (var x in currentHoudiniState.Assignment) assignment[x.Key.Name] = x.Value; currentHoudiniState.Outcome.assignment = assignment; return currentHoudiniState.Outcome; }