# HG changeset patch # User blanchet # Date 1410991365 -7200 # Node ID 5cf7df52d71ddfd5ab2fe6b5f3efdffa115f23f0 # Parent b638978797fd2c856be024f9e848fc83c4667b9f more meaningful record tests diff -r b638978797fd -r 5cf7df52d71d src/HOL/SMT_Examples/SMT_Tests.thy --- a/src/HOL/SMT_Examples/SMT_Tests.thy Thu Sep 18 00:01:27 2014 +0200 +++ b/src/HOL/SMT_Examples/SMT_Tests.thy Thu Sep 18 00:02:45 2014 +0200 @@ -539,12 +539,9 @@ black :: bool lemma - "p1 = p2 \ cx p1 = cx p2" - "p1 = p2 \ cy p1 = cy p2" - "cx p1 \ cx p2 \ p1 \ p2" - "cy p1 \ cy p2 \ p1 \ p2" + "\cx = x, cy = y\ = \cx = x', cy = y'\ \ x = x' \ y = y'" using point.simps - by smt+ + by smt lemma "cx \ cx = 3, cy = 4 \ = 3" @@ -564,14 +561,9 @@ sorry lemma - "p1 = p2 \ cx p1 = cx p2" - "p1 = p2 \ cy p1 = cy p2" - "p1 = p2 \ black p1 = black p2" - "cx p1 \ cx p2 \ p1 \ p2" - "cy p1 \ cy p2 \ p1 \ p2" - "black p1 \ black p2 \ p1 \ p2" + "\cx = x, cy = y, black = b\ = \cx = x', cy = y', black = b'\ \ x = x' \ y = y' \ b = b'" using point.simps bw_point.simps - by smt+ + by smt lemma "cx \ cx = 3, cy = 4, black = b \ = 3" @@ -587,7 +579,7 @@ "p = \ cx = 3, cy = 4, black = True \ \ p \ black := True \ \ cx := 3 \ \ cy := 4 \ = p" using point.simps bw_point.simps - sorry (* smt FIXME: bad Z3 4.3.x proof *) + by smt+ lemma "\ cx = 3, cy = 4, black = b \ \ black := w \ = \ cx = 3, cy = 4, black = w \" @@ -595,7 +587,11 @@ \ cx = 3, cy = 4, black = False \" "p \ cx := 3 \ \ cy := 4 \ \ black := True \ = p \ black := True \ \ cy := 4 \ \ cx := 3 \" - sorry + apply (smt add_One add_inc bw_point.update_convs(1) default_unit_def inc.simps(2) one_plus_BitM + semiring_norm(6,26)) + apply (smt bw_point.update_convs(1)) + apply (smt bw_point.cases_scheme bw_point.update_convs(1) point.update_convs(1,2)) + done subsubsection {* Type definitions *} @@ -660,11 +656,7 @@ subsubsection {* Records *} lemma - "p1 = p2 \ cx p1 = cx p2" - "p1 = p2 \ cy p1 = cy p2" - "cx p1 \ cx p2 \ p1 \ p2" - "cy p1 \ cy p2 \ p1 \ p2" - using point.simps + "\cx = x, cy = y\ = \cx = x', cy = y'\ \ x = x' \ y = y'" using [[smt_oracle, z3_extensions]] by smt+ @@ -689,15 +681,9 @@ by smt+ lemma - "p1 = p2 \ cx p1 = cx p2" - "p1 = p2 \ cy p1 = cy p2" - "p1 = p2 \ black p1 = black p2" - "cx p1 \ cx p2 \ p1 \ p2" - "cy p1 \ cy p2 \ p1 \ p2" - "black p1 \ black p2 \ p1 \ p2" - using point.simps bw_point.simps + "\cx = x, cy = y, black = b\ = \cx = x', cy = y', black = b'\ \ x = x' \ y = y' \ b = b'" using [[smt_oracle, z3_extensions]] - by smt+ + by smt lemma "cx \ cx = 3, cy = 4, black = b \ = 3"