/// <summary> /// Initializes a new instance of the <see cref="MembershipLemmaManager"/> class. /// Generated instance only has information about global data. /// </summary> public MembershipLemmaManager( IsaGlobalProgramRepr globalProgRepr, int globalsMax, IVariableTranslationFactory factory, string theoryName) { containsLocalInformation = false; this.factory = factory; this.theoryName = theoryName; typeIsaVisitor = new TypeIsaVisitor(factory.CreateTranslation().TypeVarTranslation); basicCmdIsaVisitor = new BasicCmdIsaVisitor(factory); isaProgramRepr = new IsaProgramRepr(globalProgRepr, null, null, null, null, null, null); config = new IsaProgramGeneratorConfig(null, true, true, true, false, SpecsConfig.None, false); consts = QualifyAccessName(isaProgramRepr.GlobalProgramRepr.constantsDeclDef); globals = QualifyAccessName(isaProgramRepr.GlobalProgramRepr.globalsDeclDef); constsAndGlobalsDefs = new[] { consts + "_def", globals + "_def" }; constsAndGlobalsList = IsaCommonTerms.AppendList(IsaCommonTerms.TermIdentFromName(consts), IsaCommonTerms.TermIdentFromName(globals)); AddMinOrMaxLemma(true, globalsMax, VariableNames(constsAndGlobalsList)); AddWellFormednessLemmas(); }
public MembershipLemmaManager( IsaProgramGeneratorConfig config, IsaProgramRepr isaProgramRepr, IsaBlockInfo isaBlockInfo, Tuple <int, int> GlobalsMaxLocalsMin, IVariableTranslationFactory factory, string theoryName ) { parent = config.parentAccessor; this.isaProgramRepr = isaProgramRepr; this.factory = factory; this.theoryName = theoryName; this.config = config; this.isaBlockInfo = isaBlockInfo; typeIsaVisitor = new TypeIsaVisitor(factory.CreateTranslation().TypeVarTranslation); basicCmdIsaVisitor = new BasicCmdIsaVisitor(factory); paramsAndLocalsDefs = new[] { isaProgramRepr.paramsDeclDef + "_def", isaProgramRepr.localVarsDeclDef + "_def" }; parameters = config.generateParamsAndLocals ? QualifyAccessName(isaProgramRepr.paramsDeclDef) : parent.ParamsDecl(); locals = config.generateParamsAndLocals ? QualifyAccessName(isaProgramRepr.localVarsDeclDef) : parent.LocalsDecl(); paramsAndLocalsList = IsaCommonTerms.AppendList(IsaCommonTerms.TermIdentFromName(parameters), IsaCommonTerms.TermIdentFromName(locals)); consts = config.generateGlobalsAndConstants ? QualifyAccessName(isaProgramRepr.GlobalProgramRepr.constantsDeclDef) : parent.ConstsDecl(); globals = config.generateGlobalsAndConstants ? QualifyAccessName(isaProgramRepr.GlobalProgramRepr.globalsDeclDef) : parent.GlobalsDecl(); constsAndGlobalsDefs = new[] { consts + "_def", globals + "_def" }; constsAndGlobalsList = IsaCommonTerms.AppendList(IsaCommonTerms.TermIdentFromName(consts), IsaCommonTerms.TermIdentFromName(globals)); AddDisjointnessLemmas(GlobalsMaxLocalsMin.Item1, GlobalsMaxLocalsMin.Item2); AddWellFormednessLemmas(); }