private void loadTree() { Text = model.LogFileName + ": Axiom Profiler"; z3AxiomTree.Nodes.Add(historyNode); if (model.conflicts.Count > 0) { AddTopNode(Common.Callback("CONFLICTS", () => model.conflicts)); AddTopNode(Common.Callback("100 CONFLICTS", () => RandomConflicts(100))); } if (model.proofSteps.ContainsKey(0)) { AddTopNode(model.proofSteps[0]); AddTopNode(model.SetupImportantInstantiations()); } model.NewModel(); AddTopNodes(model.models); model.PopScopes(model.scopes.Count - 1, null, 0); var rootSD = model.scopes[0]; Scope root = rootSD.Scope; var l = new Literal { Id = -1, Term = new Term("root", new Term[0]) }; rootSD.Implied.Insert(0, rootSD.Literal); l.Implied = rootSD.Implied.ToArray(); root.Literals.Add(l); root.PropagateImpliedByChildren(); root.ComputeConflictCost(new List <Conflict>()); root.AccountLastDecision(model); model.rootScope = root; List <Quantifier> quantByCnfls = model.GetRootNamespaceQuantifiers().Values.Where(q => q.GeneratedConflicts > 0).ToList(); quantByCnfls.Sort((q1, q2) => q2.GeneratedConflicts.CompareTo(q1.GeneratedConflicts)); if (quantByCnfls.Count > 0) { AddTopNode(Common.Callback("Quant. by last conflict", () => quantByCnfls)); } AddTopNode(root); AddTopNodes(model.GetQuantifiersSortedByInstantiations()); }
private void loadTree() { this.Text = model.LogFileName + ": Z3 Axiom Profiler"; z3AxiomTree.Nodes.Clear(); if (model.conflicts.Count > 0) { AddTopNode(Common.Callback("CONFLICTS", delegate() { return(model.conflicts); })); AddTopNode(Common.Callback("100 CONFLICTS", delegate() { return(RandomConflicts(100)); })); } if (model.proofSteps.ContainsKey(0)) { AddTopNode(model.proofSteps[0]); AddTopNode(model.SetupImportantInstantiations()); } model.NewModel(); foreach (var c in model.models) { AddTopNode(c); } model.PopScopes(model.scopes.Count - 1, null); var rootSD = model.scopes[0]; Scope root = rootSD.Scope; if (rootSD.Literal == null) { foreach (var i in rootSD.Implied) { System.Diagnostics.Debug.Assert(i.Id == -13); } } else { var l = new Literal(); l.Id = -1; l.Term = new Term("root", new Term[0]); rootSD.Implied.Insert(0, rootSD.Literal); l.Implied = rootSD.Implied.ToArray(); root.Literals.Add(l); } root.PropagateImpliedByChildren(); root.ComputeConflictCost(new List <Conflict>()); root.AccountLastDecision(model); model.rootScope = root; List <Quantifier> quantByCnfls = new List <Quantifier>(); foreach (var q in model.quantifiers.Values) { if (q.GeneratedConflicts > 0) { quantByCnfls.Add(q); } } quantByCnfls.Sort(delegate(Quantifier q1, Quantifier q2) { return(q2.GeneratedConflicts.CompareTo(q1.GeneratedConflicts)); }); if (quantByCnfls.Count > 0) { AddTopNode(Common.Callback("Quant. by last conflict", delegate() { return(quantByCnfls); })); } AddTopNode(root); foreach (Quantifier q in model.GetQuantifiersSortedByInstantiations()) { AddTopNode(q); } z3AxiomTree.ShowNodeToolTips = true; }