1 / 15

Exploring Solutions for Linear Diophantine Equations and Set Theory Constructs

This document delves into the synthesis of solutions for the linear Diophantine equation 10x + 14y = a. It explores methods to refine solutions based on constraints like x < y, and discusses the application of the Extended Euclid’s Algorithm to find gcd(10, 14). Additionally, it covers the theory of balanced sets and how reasoning about collections translates to problems in linear integer arithmetic. The synthesis results in parametric forms, the characterization of solutions, and strategic elimination of variables to derive general results.

kedma
Télécharger la présentation

Exploring Solutions for Linear Diophantine Equations and Set Theory Constructs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Examples and Sets

  2. Synthesize each of These choose((x,y) => 10 x + 14 y == a ) choose((x,y) => 10 x + 14 y == a && x < y) choose((x,y) => 10 x + 14 y == a && 0 < x && x < y)

  3. Constructive (Extended) Euclid’s Algorithm: gcd(10,14) 10 1410 4 6 4 4 2 2 2 0 10 x + 14 y == 10 x + 14 y == a

  4. Result of Synthesis for one Equation choose((x,y) => 10 x + 14 y == a ) assert ( ) valx = valy = check the solution: Change in requirements! Customer also wants: x < y does our solution work for e.g. a=2

  5. Idea: Eliminate Variables choose((x,y) => 10 x + 14 y == a && x < y) Cannot easily eliminate one of the x,y. • Eliminate both x,y, get one free - z x = 3/2 a + c1 z y = -a + c2 z c1 = ? c2= ? • Find general form, characterize all solutions, • parametric solution

  6. Idea: Eliminate Variables choose((x,y) => 10 x + 14 y == a && x < y) x = 3/2 a + c1 z y = -a + c2 z c1 = ? c2= ? 10 x0+ 14 y0 + (10 c1 + 14 c2) == a 10 c1+ 14 c2 == 0

  7. choose((x,y) => 10 x + 14 y == a && x < y) x = 3/2 a + 5 z y = -a - 7 z

  8. Synthesis for sets defsplitBalanced[T](s: Set[T]) : (Set[T], Set[T]) = choose((a: Set[T], b: Set[T]) ⇒ ( a union b == s && a intersect b == empty && a.size – b.size ≤ 1 && b.size – a.size ≤ 1 )) defsplitBalanced[T](s: Set[T]) : (Set[T], Set[T]) = val k = ((s.size + 1)/2).floor valt1 = k val t2 = s.size – k val s1 = take(t1, s) vals2 = take(t2, s minus s1) (s1, s2) s b a

  9. From Data Structures to Numbers • Observation: • Reasoning about collections reduces to reasoning about linear integer arithmetic! a.size == b.size && a union b == bigSet && a intersect b == empty a b bigSet

  10. From Data Structures to Numbers • Observation: • Reasoning about collections reduces to reasoning about linear integer arithmetic! a.size == b.size && a union b == bigSet && a intersect b == empty a b bigSet

  11. From Data Structures to Numbers • Observation: • Reasoning about collections reduces to reasoning about linear integer arithmetic! a.size == b.size && a union b == bigSet && a intersect b == empty a b bigSet

  12. From Data Structures to Numbers • Observation: • Reasoning about collections reduces to reasoning about linear integer arithmetic! a.size == b.size&& a union b == bigSet && a intersect b == empty New specification: kA = kB a b bigSet

  13. From Data Structures to Numbers • Observation: • Reasoning about collections reduces to reasoning about linear integer arithmetic! a.size == b.size && a union b == bigSet && a intersect b == empty New specification: kA = kB && kA +kB = |bigSet| a b bigSet

More Related