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()); }
public static void EnsureAllExisted() { Solc.EnsureExisted(); Z3.EnsureExisted(); Boogie.EnsureExisted(); (Boogie as DotnetCliToolManager).EnsureLinkedToZ3(Z3); Corral.EnsureExisted(); (Corral as DotnetCliToolManager).EnsureLinkedToZ3(Z3); }
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); } }
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(); }
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()); }
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)); }
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; }
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; }
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; }
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; }