Ejemplo n.º 1
0
		public override void WriteGroupCodes()
		{
			int flags;

			WriteGroupCodeValue(10, X0.ToString().Trim());
			WriteGroupCodeValue(20, Y0.ToString().Trim());
			WriteGroupCodeValue(30, Z0.ToString().Trim());

			WriteGroupCodeValue(11, X1.ToString().Trim());
			WriteGroupCodeValue(21, Y1.ToString().Trim());
			WriteGroupCodeValue(31, Z1.ToString().Trim());

			WriteGroupCodeValue(12, X2.ToString().Trim());
			WriteGroupCodeValue(22, Y2.ToString().Trim());
			WriteGroupCodeValue(32, Z2.ToString().Trim());

			WriteGroupCodeValue(13, X3.ToString().Trim());
			WriteGroupCodeValue(23, Y3.ToString().Trim());
			WriteGroupCodeValue(33, Z3.ToString().Trim());

			flags = 0;

			if(Edge1Invisible) flags += 1;
			if(Edge2Invisible) flags += 2;
			if(Edge3Invisible) flags += 4;
			if(Edge4Invisible) flags += 8;

			WriteGroupCodeValue(70, flags.ToString().Trim());
		}
Ejemplo n.º 2
0
        public static void EnsureAllExisted()
        {
            Solc.EnsureExisted();

            Z3.EnsureExisted();

            Boogie.EnsureExisted();
            (Boogie as DotnetCliToolManager).EnsureLinkedToZ3(Z3);

            Corral.EnsureExisted();
            (Corral as DotnetCliToolManager).EnsureLinkedToZ3(Z3);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            Z3            solveur = new Z3();
            Sudoku        s       = new Sudoku();
            List <Sudoku> sudokus = new List <Sudoku>();

            sudokus = s.ParseFile("C:/Users/hengm/Downloads/Easy.txt");
            for (int i = 0; i < sudokus.Count; i++)
            {
                s = solveur.Solve(sudokus[i]);
                Console.WriteLine("Solution : ---------------\n");
                Console.WriteLine(s);
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            //For ORMPart1 uncommit in App.config connectionstring for Part1
            //Z2 z2 = new Z2();
            //z2.RunZ2();
            Z3 z3 = new Z3();

            z3.RunZ3();

            //For ORMPart2 uncommit in App.config connectionstring for Part2
            //Part2Zadanie p2z1 = new Part2Zadanie();
            //p2z1.RunZ1();
            //p2z1.RunZ3();

            Console.ReadKey();
        }
Ejemplo n.º 5
0
        public override void WriteGroupCodes()
        {
            WriteGroupCodeValue(10, X0.ToString().Trim());
            WriteGroupCodeValue(20, Y0.ToString().Trim());
            WriteGroupCodeValue(30, Z0.ToString().Trim());

            WriteGroupCodeValue(11, X1.ToString().Trim());
            WriteGroupCodeValue(21, Y1.ToString().Trim());
            WriteGroupCodeValue(31, Z1.ToString().Trim());

            WriteGroupCodeValue(12, X2.ToString().Trim());
            WriteGroupCodeValue(22, Y2.ToString().Trim());
            WriteGroupCodeValue(32, Z2.ToString().Trim());

            WriteGroupCodeValue(13, X3.ToString().Trim());
            WriteGroupCodeValue(23, Y3.ToString().Trim());
            WriteGroupCodeValue(33, Z3.ToString().Trim());
        }
Ejemplo n.º 6
0
        public override ECPoint Add(ECPoint b)
        {
            if (this.IsInfinity)
            {
                return(b);
            }
            if (b.IsInfinity)
            {
                return(this);
            }

            ECCurve curve = this.Curve;

            ECFieldElement X1 = this.RawXCoord;
            ECFieldElement X2 = b.RawXCoord;

            if (X1.IsZero)
            {
                if (X2.IsZero)
                {
                    return(curve.Infinity);
                }

                return(b.Add(this));
            }

            ECFieldElement L1 = this.RawYCoord, Z1 = this.RawZCoords[0];
            ECFieldElement L2 = b.RawYCoord, Z2 = b.RawZCoords[0];

            bool           Z1IsOne = Z1.IsOne;
            ECFieldElement U2 = X2, S2 = L2;

            if (!Z1IsOne)
            {
                U2 = U2.Multiply(Z1);
                S2 = S2.Multiply(Z1);
            }

            bool           Z2IsOne = Z2.IsOne;
            ECFieldElement U1 = X1, S1 = L1;

            if (!Z2IsOne)
            {
                U1 = U1.Multiply(Z2);
                S1 = S1.Multiply(Z2);
            }

            ECFieldElement A = S1.Add(S2);
            ECFieldElement B = U1.Add(U2);

            if (B.IsZero)
            {
                if (A.IsZero)
                {
                    return(Twice());
                }

                return(curve.Infinity);
            }

            ECFieldElement X3, L3, Z3;

            if (X2.IsZero)
            {
                // TODO This can probably be optimized quite a bit
                ECPoint p = this.Normalize();
                X1 = p.XCoord;
                ECFieldElement Y1 = p.YCoord;

                ECFieldElement Y2 = L2;
                ECFieldElement L  = Y1.Add(Y2).Divide(X1);

                //X3 = L.Square().Add(L).Add(X1).Add(curve.A);
                X3 = L.Square().Add(L).Add(X1);
                if (X3.IsZero)
                {
                    //return new SecT233K1Point(curve, X3, curve.B.sqrt(), IsCompressed);
                    return(new SecT233K1Point(curve, X3, curve.B, IsCompressed));
                }

                ECFieldElement Y3 = L.Multiply(X1.Add(X3)).Add(X3).Add(Y1);
                L3 = Y3.Divide(X3).Add(X3);
                Z3 = curve.FromBigInteger(BigInteger.One);
            }
            else
            {
                B = B.Square();

                ECFieldElement AU1 = A.Multiply(U1);
                ECFieldElement AU2 = A.Multiply(U2);

                X3 = AU1.Multiply(AU2);
                if (X3.IsZero)
                {
                    //return new SecT233K1Point(curve, X3, curve.B.sqrt(), IsCompressed);
                    return(new SecT233K1Point(curve, X3, curve.B, IsCompressed));
                }

                ECFieldElement ABZ2 = A.Multiply(B);
                if (!Z2IsOne)
                {
                    ABZ2 = ABZ2.Multiply(Z2);
                }

                L3 = AU2.Add(B).SquarePlusProduct(ABZ2, L1.Add(Z1));

                Z3 = ABZ2;
                if (!Z1IsOne)
                {
                    Z3 = Z3.Multiply(Z1);
                }
            }

            return(new SecT233K1Point(curve, X3, L3, new ECFieldElement[] { Z3 }, IsCompressed));
        }
Ejemplo n.º 7
0
        public bool initializeFromModel(Z3.Model model, ref Z3Context z3Context)
        {
            Debug.Assert(model != null);
            Context context = z3Context.context;
            Term termHasFirst = context.MkConst(this.str + "_hf", z3Context.boolSort);
            Term termHasSecond = context.MkConst(this.str + "_hs", z3Context.boolSort);
            Term termSign1 = context.MkConst(this.str + "_s1", z3Context.boolSort);
            Term termSign2 = context.MkConst(this.str + "_s2", z3Context.boolSort);
            Term termVar1 = context.MkConst(this.str + "_v1", z3Context.intSort);
            Term termVar2 = context.MkConst(this.str + "_v2", z3Context.intSort);
            Term termOp = context.MkConst(this.str + "_op", z3Context.boolSort);
            Term termConstant = context.MkConst(this.str + "_c", z3Context.intSort);

            bool ret = false;

            bool hf = context.GetBoolValue(model.Eval(termHasFirst)).getBool();
            bool hs = context.GetBoolValue(model.Eval(termHasSecond)).getBool();
            bool s1 = context.GetBoolValue(model.Eval(termSign1)).getBool();
            bool s2 = context.GetBoolValue(model.Eval(termSign2)).getBool();
            int v1 = context.GetNumeralInt(model.Eval(termVar1));
            int v2 = context.GetNumeralInt(model.Eval(termVar2));
            bool op = context.GetBoolValue(model.Eval(termOp)).getBool();
            int c = context.GetNumeralInt(model.Eval(termConstant));

            if (this.hasFirst != hf)
            {
                ret = true;
                goto init;
            }
            if (!this.hasFirst && !hf)
            {
                bool oldVal = this.op ? 0 == this.constant : 0 <= this.constant;
                bool newVal = op ? 0 == c : 0 <= c;
                if (oldVal != newVal)
                {
                    ret = true;
                }
                goto init;
            }
            // hf && this.hasFirst
            if (this.sign1 != s1 || this.var1 != v1)
            {
                ret = true;
                goto init;
            }
            if (this.hasSecond != hs)
            {
                ret = true;
                goto init;
            }
            if (this.hasSecond && hs)
            {
                if (this.sign2 != s2 || this.var2 != v2)
                {
                    ret = true;
                    goto init;
                }
            }
            if (this.op != op || this.constant != c)
            {
                ret = true;
                goto init;
            }

            init:
            this.hasFirst = hf;
            this.hasSecond = hs;
            this.sign1 = s1;
            this.sign2 = s2;
            this.var1 = v1;
            this.var2 = v2;
            this.op = op;
            this.constant = c;

            return ret;
        }
Ejemplo n.º 8
0
        public bool initializeFromModel(Z3.Model model, ref Z3Context z3Context)
        {
            Debug.Assert(model != null);
            Context context = z3Context.context;

            Term termUpperLimit = context.MkConst(this.str + "_ul", z3Context.intSort);
            Term termLowerLimit = context.MkConst(this.str + "_ll", z3Context.intSort);
            Term termHasUpperLimit = context.MkConst(this.str + "_hul", z3Context.boolSort);
            Term termHasLowerLimit = context.MkConst(this.str + "_hll", z3Context.boolSort);

            bool ret = false;

            int ul = context.GetNumeralInt(model.Eval(termUpperLimit));
            int ll = context.GetNumeralInt(model.Eval(termLowerLimit));
            bool hul = context.GetBoolValue(model.Eval(termHasUpperLimit)).getBool();
            bool hll = context.GetBoolValue(model.Eval(termHasLowerLimit)).getBool();

            if((hasUpperLimit != hul) || (hasUpperLimit && hul && (upperLimit != ul)))
                ret = true;

            if ((hasLowerLimit != hll) || (hasLowerLimit && hll && (lowerLimit != ll)))
                ret = true;

            upperLimit = ul;
            lowerLimit = ll;
            hasUpperLimit = hul;
            hasLowerLimit = hll;
            return ret;
        }
Ejemplo n.º 9
0
        public bool initializeFromModel(Z3.Model model, ref Z3Context z3Context)
        {
            Debug.Assert(model != null);
            bool ret = false;
            if (this.arg1.initializeFromModel(model, ref z3Context))
                ret = true;
            if (this.arg2.initializeFromModel(model, ref z3Context))
                ret = true;

            return ret;
        }
Ejemplo n.º 10
0
 public bool initializeFromModel(Z3.Model model, ref Z3Context z3Context)
 {
     Debug.Assert(model != null);
     bool ret = false;
     for (int i = 0; i < args.Count; i++)
     {
         if (this.args.ElementAt(i).initializeFromModel(model, ref z3Context))
             ret = true;
     }
     return ret;
 }