Counter-Example Guided Inductive Synthesis  Concrete inputs I for learning f(x,y) = { (x=a,y=b), (x=a',y=b'), ….}  Learning algorithm proposes candidate expression e such that  [f/e] holds for all values in I  Check if  [f/e] is valid for all values using SMT solver  If valid, then stop and return e  If not, let (x= , y= , ….) be a counter-example (satisfies ~  [f/e])  Add (x= , y=  ) to tests I for next iteration 31
{}