Exemplo n.º 1
0
        public override List <AssumeCmd> GetInstantiationCmds()
        {
            var result = new List <AssumeCmd>();

            foreach (var instantiation in instantiationExprPairs)
            {
                foreach (var thread in new int[] { 1, 2 })
                {
                    var vd = new VariableDualiser(thread, Dualiser.Verifier, ProcName);
                    var ti = new ThreadPairInstantiator(Dualiser.Verifier, instantiation.Item1, instantiation.Item2, thread);

                    var assume = new AssumeCmd(
                        Token.NoToken,
                        Expr.Imp(
                            vd.VisitExpr(Predicate),
                            Expr.Imp(
                                Expr.And(
                                    Expr.And(
                                        Expr.And(
                                            NonNegative(instantiation.Item1),
                                            NotTooLarge(instantiation.Item1)),
                                        Expr.And(
                                            NonNegative(instantiation.Item2),
                                            NotTooLarge(instantiation.Item2))),
                                    Expr.Neq(instantiation.Item1, instantiation.Item2)),
                                ti.VisitExpr(BarrierInvariant))));
                    result.Add(vd.VisitAssumeCmd(assume) as AssumeCmd);
                }
            }

            return(result);
        }
Exemplo n.º 2
0
        public override List <AssumeCmd> GetInstantiationCmds()
        {
            var result = new List <AssumeCmd>();

            foreach (var instantiation in instantiationExprs)
            {
                foreach (var thread in Enumerable.Range(1, 2))
                {
                    var vd = new VariableDualiser(thread, Dualiser.Verifier, ProcName);
                    var ti = new ThreadInstantiator(instantiation, thread, Dualiser.Verifier, ProcName);

                    var assume = new AssumeCmd(
                        Token.NoToken,
                        Expr.Imp(
                            vd.VisitExpr(Predicate),
                            Expr.Imp(
                                Expr.And(
                                    NonNegative(instantiation),
                                    NotTooLarge(instantiation)),
                                ti.VisitExpr(BarrierInvariant))));
                    result.Add(vd.VisitAssumeCmd(assume) as AssumeCmd);
                }
            }

            return(result);
        }
        internal override List <AssumeCmd> GetInstantiationCmds()
        {
            var result = new List <AssumeCmd>();

            foreach (var Instantiation in InstantiationExprs)
            {
                foreach (var Thread in new int[] { 1, 2 })
                {
                    var vd = new VariableDualiser(Thread, Dualiser.verifier.uniformityAnalyser, ProcName);
                    var ti = new ThreadInstantiator(Instantiation, Thread,
                                                    Dualiser.verifier.uniformityAnalyser, ProcName);

                    var Assume = new AssumeCmd(Token.NoToken,
                                               Expr.Imp(vd.VisitExpr(Predicate),
                                                        Expr.Imp(Expr.And(
                                                                     NonNegative(Instantiation),
                                                                     NotTooLarge(Instantiation)),
                                                                 ti.VisitExpr(BarrierInvariant))));
                    result.Add(vd.VisitAssumeCmd(Assume) as AssumeCmd);
                }
            }
            return(result);
        }