public static HashSet <VCExprVar> CollectBindings(QuantifierInstantiationEngine qiEngine, VCExpr vcExpr) { var bindingCollector = new BindingCollector(qiEngine); bindingCollector.Traverse(vcExpr, true); return(bindingCollector.bindings); }
private VCExpr LetConvert(VCExpr vcExpr) { var bindings = BindingCollector.CollectBindings(this, vcExpr).ToList(); if (bindings.Count == 0) { return(vcExpr); } var rhss = new List <VCExprLetBinding>(); foreach (var binding in bindings) { rhss.Add(new VCExprLetBinding(binding, LetConvert(this.AugmentWithInstances(quantifierBinding[binding])))); } return(vcExprGen.Let(rhss, vcExpr)); }