# Linked List Implementation class List { private List next; private Object data; private static List root; private static int size; public static void addNew(Object.

## Presentation on theme: "Linked List Implementation class List { private List next; private Object data; private static List root; private static int size; public static void addNew(Object."— Presentation transcript:

Linked List Implementation class List { private List next; private Object data; private static List root; private static int size; public static void addNew(Object x) { List n1 = new List(); n1.next = root; n1.data = x; root = n1; size = size + 1; } next root data x invariant : size = |{data(x). next*(root,x)}|

Verification Condition for addNew  next0*(root0,n1)  x  {data0(n) | next0*(root0,n)}  next=next0[n1:=root0]  data=data0[n1:=x]  |{data(n). next*(n1,n)}| = |{data0(n). next0*(root0,n)}| + 1 Expressing this VC requires a rich logic –transitive closure * (in lists and also in trees) –unconstraint functions (data, data0) –cardinality operator on sets |... | Is there a decidable logic containing all this? “The number of stored objects has increased by one.”

Decomposing the Formula Consider a (simpler) formula |{data(x). next*(root,x)}|=k+1 Introduce fresh variables denoting sets: A = {x. next*(root,x)}  B = {y.  x. data(x,y)  x  A}  |B|=k+1 Conjuncts belong to decidable fragments! 1) WS2S 2) C 2 3) BAPA Next –define these 3 fragments –sketch a technique to combine them

WS2S: Monadic 2 nd Order Logic Weak Monadic 2 nd -order Logic of 2 Successors In HOL, satisfiability of formulas of the form: tree[f1,f2] & F(f1,f2,S,T) where - tree[f1,f2] means f1,f2 form a tree F ::= x=f1(y) | x=f2(y) |x  S | S  T | 9 S.F | F 1 Æ F 2 | : F - quantification is over finite sets of positions in tree - transitive closure encoded using set quantification Decision procedure - recognize WS2S formula within HOL - run the MONA tool (tree automata, BDDs) f2 f1 f2 f1 f2 f1

C 2 : Two-Variable Logic w/ Counting Two-Variable Logic with Counting F ::= P(v 1,...,v n ) | F 1 Æ F 2 | : F | 9 count v i.F where P : is a predicate symbol v i : is one of the two variable names x,y count : is =k,  k, or  k for nonnegative constants k We can write ( 9  k v i.F) as |{v i.F}|  k We can define 9, 8 and axiomatize total functions: 8 x 9 =1 y.R(x,y) Decidable sat. and fin-sat. (1997), NEXPTIME even for binary-encoded k: Pratt-Hartman ‘05

BAPA: Boolean Algebra with Presburger Arithmetic Essence of decidability: Feferman, Vaught 1959 Our results –first implementation for BAPA (CADE’05) –first, exact, complexity for full BAPA (JAR’06) –first, exact, complexity for QFBAPA (CADE’07) –generalize to multisets (VMCAI’08,CAV’08,CSL’08) New: role of BAPA in combination of logics S ::= V | S 1 [ S 2 | S 1 Å S 2 | S 1 n S 2 T ::= k | C | T 1 + T 2 | T 1 – T 2 | C ¢ T | |S| A ::= S 1 = S 2 | S 1 µ S 2 | T 1 = T 2 | T 1 < T 2 F ::= A | F 1 Æ F 2 | F 1 Ç F 2 | : F | 9 S.F | 9 k.F

Back to Decomposing the Formula Consider a (simpler) formula |{data(x). next*(root,x)}|=k+1 Introduce fresh variables denoting sets: A = {x. next*(root,x)}  B = {y.  x. data(x,y)  x  A}  |B|=k+1 Conjuncts belong to decidable fragments 1) WS2S 2) C 2 3) BAPA Next –define these 3 fragments – we have seen this –sketch a technique to combine them

Combining Decidable Logics Satisfiability problem expressed in HOL: (all free symbols existentially quantified)  next,data,k.  root,A,B. A = {x. next*(root,x)}  B = {y.  x. data(x,y)  x  A}  |B|=k+1 We assume formulas share only: - set variables (sets of uninterpreted elems) - individual variables, as a special case - {x} 1) WS2S 2) C 2 3) BAPA

Satisfiability problem expressed in HOL, after moving fragment-specific quantifiers  root,A,B.  next. A = {x. next*(root,x)}   data. B = {y.  x. data(x,y)  x  A}   k. |B|=k+1 Extend decision procedures into projection procedures for WS2S,C 2,BAPA applies  to all non-set variables Combining Decidable Logics F WS2S F C2 F BAPA : {root} µ A : |B|  |A| : 1  |B|  root,A,B. {root} µ A  |B|  |A|  1  |B| Conjunction of projections satisfiable  so is original formula

Fragment of Insertion into Tree right left right left data p left data

Verification Condition for Tree Insertion Conjunction of projections unsatisfiable  so is original formula

Decision Procedure for Combination 1.Separate formula into WS2S, C 2, BAPA parts 2.For each part, compute projection onto set vars 3.Check satisfiability of conjunction of projections Definition: Logic is effectively cardinality-linear iff there is an algorithm that computes projections of formulas onto set variables, and these projections are quantifier-free BAPA formulas. Theorem: WS2S, C 2, BAPA are all cardinality linear. Proof: WS2S – Parikh image of tree language is in PA C 2 – proof by Pratt-Hartmann reduces to PA BAPA - has quantifier elimination

Similar presentations