filesystem and graph constraints

Nicolas Jeannerod

Journ´eesPPS, October 12, 2017

Nicolas Jeannerod Journ´eesPPS October 12, 2017 1 / 21 The CoLiS project

T1 P Paris Shell Script L Lille S Saclay Compiler P

CoLiS Program S,P

T3 T2 Deep Embedding Translator

Symbolic Tree Tree Interpreter S,P Execution Constraints Transducers L,P

Incremental Equivalence Simplification

Nicolas Jeannerod Journ´eesPPS October 12, 2017 2 / 21 The CoLiS project

T1 P Paris Shell Script L Lille S Saclay Compiler P

CoLiS Program S,P

T3 T2 Deep Embedding Translator

Symbolic Tree Tree Interpreter S,P Execution Constraints Transducers L,P

Incremental Equivalence Simplification Test

Nicolas Jeannerod Journ´eesPPS October 12, 2017 2 / 21 Description of file systems Unix file system Table of Contents

1. Description of file systems Unix file system Static description Directory update

2. Tree constraints Definitions Basic constraints Existential and first order constraints

Nicolas Jeannerod Journ´eesPPS October 12, 2017 3 / 21 Description of file systems Unix file system Unix file system

/ usr lib etc

lib root

libc.so libc.so.6

Basically a tree with labelled nodes and edges; There can be sharing the leafs (hard link between files); There can be pointers to other parts of the tree (symbolic links) which may form cycles.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 4 / 21 Description of file systems Unix file system Unix file system

/ usr lib etc

lib root

libc.so libc.so.6

Basically a tree with labelled nodes and edges; There can be sharing at the leafs (hard link between files); There can be pointers to other parts of the tree (symbolic links) which may form cycles.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 4 / 21 Description of file systems Unix file system Unix file system

/ usr lib etc

lib root

libc.so libc.so.6

Basically a tree with labelled nodes and edges; There can be sharing at the leafs (hard link between files); There can be pointers to other parts of the tree (symbolic links) which may form cycles.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 4 / 21 Description of file systems Unix file system Unix file system

/ usr lib etc

lib root

libc.so libc.so.6

Basically a tree with labelled nodes and edges; There can be sharing at the leafs (hard link between files); There can be pointers to other parts of the tree (symbolic links) which may form cycles.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 4 / 21 Description of file systems Static description Table of Contents

1. Description of file systems Unix file system Static description Directory update

2. Tree constraints Definitions Basic constraints Existential and first order constraints

Nicolas Jeannerod Journ´eesPPS October 12, 2017 5 / 21 Description of file systems Static description Static description

/ usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Static description Static description

/ usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Static description Static description

r usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Static description Static description

r usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Static description Static description

r usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Static description Static description

r usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Static description Static description

r usr etc v w lib skel x u∅ ocaml

r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ r ∃u, v, x, w. ∧ r[etc]w ∧ w[skel]u ∧ u∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 6 / 21 Description of file systems Directory update Table of Contents

1. Description of file systems Unix file system Static description Directory update

2. Tree constraints Definitions Basic constraints Existential and first order constraints

Nicolas Jeannerod Journ´eesPPS October 12, 2017 7 / 21 Description of file systems Directory update Directory update

r r0 usr etc usr etc v w v0 w /usr/lib/ocaml lib lib x x0 ocaml ocaml 0 y ∅

We want something like:

0 0 0 0 0 0 0 r = r[usr → v ] ∧ v = v[lib → x ] ∧ x = x[ocaml → y ] ∧ y ∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 8 / 21 Description of file systems Directory update Directory update

r r0 usr etc usr etc v w v0 w mkdir /usr/lib/ocaml lib lib x x0 ocaml ocaml 0 y ∅

We want something like:

0 0 0 0 0 0 0 r = r[usr → v ] ∧ v = v[lib → x ] ∧ x = x[ocaml → y ] ∧ y ∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 8 / 21 Description of file systems Directory update Directory update

r r0 usr etc usr etc v w v0 w mkdir /usr/lib/ocaml lib lib x x0 ocaml ocaml 0 y ∅

We want something like:

0 0 0 0 0 0 0 r = r[usr → v ] ∧ v = v[lib → x ] ∧ x = x[ocaml → y ] ∧ y ∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 8 / 21 Description of file systems Directory update Directory update

r r0 usr etc usr etc v w v0 w mkdir /usr/lib/ocaml lib lib x x0 ocaml ocaml 0 y ∅

We want something like:

0 0 0 0 0 0 0 r = r[usr → v ] ∧ v = v[lib → x ] ∧ x = x[ocaml → y ] ∧ y ∅

Nicolas Jeannerod Journ´eesPPS October 12, 2017 8 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Er.. is that really what we want?

Asymmetric: y = x[f → v]

Makes it hard to eliminate variables: y = x[f → v] ∧ z = x[g → w]

Contains in fact two pieces of information: “y and x are different in f, identical everywhere else”:

y ∼f x

“y points to v through f”: y[f]v

Nicolas Jeannerod Journ´eesPPS October 12, 2017 9 / 21 Description of file systems Directory update Much better

Allows to express the update:

y = x[f → v] := y ∼f x ∧ y[f]v

Symmetric: y ∼f x ⇐⇒ x ∼f y

Transitive: y ∼f x ∧ z ∼f x =⇒ y ∼f z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 10 / 21 Description of file systems Directory update Much better

Allows to express the update:

y = x[f → v] := y ∼f x ∧ y[f]v

Symmetric: y ∼f x ⇐⇒ x ∼f y

Transitive: y ∼f x ∧ z ∼f x =⇒ y ∼f z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 10 / 21 Description of file systems Directory update Much better

Allows to express the update:

y = x[f → v] := y ∼f x ∧ y[f]v

Symmetric: y ∼f x ⇐⇒ x ∼f y

Transitive: y ∼f x ∧ z ∼f x =⇒ y ∼f z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 10 / 21 Tree constraints Definitions Table of Contents

1. Description of file systems Unix file system Static description Directory update

2. Tree constraints Definitions Basic constraints Existential and first order constraints

Nicolas Jeannerod Journ´eesPPS October 12, 2017 11 / 21 Tree constraints Definitions Constraints

K finite set; Dir ∈ K; F infinite set Finite trees labelled with K on nodes and F on edges x, y variables; K ∈ K, f ∈ F, F ⊆ F

. Equality x = y K(x) Kind Feature xfy xf ↑ Absence

Fence xF x ∼F y Similarity

Composed with ¬, ∧, ∨, ∃x, ∀x No quantification on kinds and features Wanted: (un)satisfiability of these constraints Bonus point for incremental procedures

Nicolas Jeannerod Journ´eesPPS October 12, 2017 12 / 21 Tree constraints Definitions Constraints

K finite set; Dir ∈ K; F infinite set Finite trees labelled with K on nodes and F on edges x, y variables; K ∈ K, f ∈ F, F ⊆ F

. Equality x = y K(x) Kind Feature xfy xf ↑ Absence

Fence xF x ∼F y Similarity

Composed with ¬, ∧, ∨, ∃x, ∀x No quantification on kinds and features Wanted: (un)satisfiability of these constraints Bonus point for incremental procedures

Nicolas Jeannerod Journ´eesPPS October 12, 2017 12 / 21 Tree constraints Definitions Constraints

K finite set; Dir ∈ K; F infinite set Finite trees labelled with K on nodes and F on edges x, y variables; K ∈ K, f ∈ F, F ⊆ F

. Equality x = y K(x) Kind Feature xfy xf ↑ Absence

Fence xF x ∼F y Similarity

Composed with ¬, ∧, ∨, ∃x, ∀x No quantification on kinds and features Wanted: (un)satisfiability of these constraints Bonus point for incremental procedures

Nicolas Jeannerod Journ´eesPPS October 12, 2017 12 / 21 Tree constraints Definitions Constraints

K finite set; Dir ∈ K; F infinite set Finite trees labelled with K on nodes and F on edges x, y variables; K ∈ K, f ∈ F, F ⊆ F

. Equality x = y K(x) Kind Feature xfy xf ↑ Absence

Fence xF x ∼F y Similarity

Composed with ¬, ∧, ∨, ∃x, ∀x No quantification on kinds and features Wanted: (un)satisfiability of these constraints Bonus point for incremental procedures

Nicolas Jeannerod Journ´eesPPS October 12, 2017 12 / 21 Tree constraints Definitions Constraints

K finite set; Dir ∈ K; F infinite set Finite trees labelled with K on nodes and F on edges x, y variables; K ∈ K, f ∈ F, F ⊆ F

. Equality x = y K(x) Kind Feature xfy xf ↑ Absence

Fence xF x ∼F y Similarity

Composed with ¬, ∧, ∨, ∃x, ∀x No quantification on kinds and features Wanted: (un)satisfiability of these constraints Bonus point for incremental procedures

Nicolas Jeannerod Journ´eesPPS October 12, 2017 12 / 21 Tree constraints Definitions Game plan

1. a system of rewriting rules; 2. Prove that the system terminates (help it if needed);

3. Prove that the rules respect equivalences: Lemma If φ reduces to ψ, then |= φ ↔ ψ.

4. Prove properties on the normal forms: Lemma If φ is in normal form, then it is either satisfiable or ⊥.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 13 / 21 Tree constraints Definitions Game plan

1. Write a system of rewriting rules; 2. Prove that the system terminates (help it if needed);

3. Prove that the rules respect equivalences: Lemma If φ reduces to ψ, then |= φ ↔ ψ.

4. Prove nice properties on the normal forms: Lemma If φ is in normal form, then it is either satisfiable or ⊥.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 13 / 21 Tree constraints Definitions Game plan

1. Write a system of rewriting rules; 2. Prove that the system terminates (help it if needed);

3. Prove that the rules respect equivalences: Lemma If φ reduces to ψ, then |= φ ↔ ψ.

4. Prove nice properties on the normal forms: Lemma If φ is in normal form, then it is either satisfiable or ⊥.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 13 / 21 Tree constraints Definitions Game plan

1. Write a system of rewriting rules; 2. Prove that the system terminates (help it if needed);

3. Prove that the rules respect equivalences: Lemma If φ reduces to ψ, then |= φ ↔ ψ.

4. Prove nice properties on the normal forms: Lemma If φ is in normal form, then it is either satisfiable or ⊥.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 13 / 21 Tree constraints Basic constraints Table of Contents

1. Description of file systems Unix file system Static description Directory update

2. Tree constraints Definitions Basic constraints Existential and first order constraints

Nicolas Jeannerod Journ´eesPPS October 12, 2017 14 / 21 Tree constraints Basic constraints Basic rules

Basic constraints: conjunction of positive atoms.

Simpl-Feats C-Feat-Abs xfy ∧ xfz xfy ∧ xf ↑ . xfy ∧ y = z ⊥

Intro-Feat-Sim Intro-Sim-Sims x ∼F y ∧ xfz x ∼F y ∧ y ∼G z f∈ / F x ∼F y ∧ xfz ∧ yfz x ∼F y ∧ y ∼G z ∧ x ∼(F ∪G) z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 15 / 21 Tree constraints Basic constraints Basic rules

Basic constraints: conjunction of positive atoms.

Simpl-Feats C-Feat-Abs xfy ∧ xfz xfy ∧ xf ↑ . xfy ∧ y = z ⊥

Intro-Feat-Sim Intro-Sim-Sims x ∼F y ∧ xfz x ∼F y ∧ y ∼G z f∈ / F x ∼F y ∧ xfz ∧ yfz x ∼F y ∧ y ∼G z ∧ x ∼(F ∪G) z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 15 / 21 Tree constraints Basic constraints Basic rules

Basic constraints: conjunction of positive atoms.

Simpl-Feats C-Feat-Abs xfy ∧ xfz xfy ∧ xf ↑ . xfy ∧ y = z ⊥

Intro-Feat-Sim Intro-Sim-Sims x ∼F y ∧ xfz x ∼F y ∧ y ∼G z f∈ / F x ∼F y ∧ xfz ∧ yfz x ∼F y ∧ y ∼G z ∧ x ∼(F ∪G) z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 15 / 21 Tree constraints Basic constraints Basic rules

Basic constraints: conjunction of positive atoms.

Simpl-Feats C-Feat-Abs xfy ∧ xfz xfy ∧ xf ↑ . xfy ∧ y = z ⊥

Intro-Feat-Sim Intro-Sim-Sims x ∼F y ∧ xfz x ∼F y ∧ y ∼G z f∈ / F x ∼F y ∧ xfz ∧ yfz x ∼F y ∧ y ∼G z ∧ x ∼(F ∪G) z

Nicolas Jeannerod Journ´eesPPS October 12, 2017 15 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Basic constraints Basic constraints

Basic constraints: conjunction of positive atoms

Equality: rewritten Kind: Static “positive” information Feature: Static “positive” information Absence: Static “negative” information Fence: Static “negative” information Similarity: Dynamic information r r[usr]v ∧ v[lib]x ∧ x[ocaml] ↑ usr etc ∧r[etc]w ∧ w[skel]u ∧ u∅ v w ∧ ... lib skel x u

Nicolas Jeannerod Journ´eesPPS October 12, 2017 16 / 21 Tree constraints Existential and first order constraints Table of Contents

1. Description of file systems Unix file system Static description Directory update

2. Tree constraints Definitions Basic constraints Existential and first order constraints

Nicolas Jeannerod Journ´eesPPS October 12, 2017 17 / 21 Tree constraints Existential and first order constraints Negation: new players, new rules

¬xF : there exist a g∈ / F such that xg ↓; . x 6∼F y: there exist a g∈ / F such that x 6=g y;

Repl-NKind ¬K(x) _ L(x) L∈K

Repl-NAbs Repl-NSim-NFence ¬xf ↑ xF ∧ x 6∼G y F ⊆ G ∃z.xfz xF ∧ ¬xG

Nicolas Jeannerod Journ´eesPPS October 12, 2017 18 / 21 Tree constraints Existential and first order constraints Negation: new players, new rules

¬xF : there exist a g∈ / F such that xg ↓; . x 6∼F y: there exist a g∈ / F such that x 6=g y;

Repl-NKind ¬K(x) _ L(x) L∈K

Repl-NAbs Repl-NSim-NFence ¬xf ↑ xF ∧ x 6∼G y F ⊆ G ∃z.xfz xF ∧ ¬xG

Nicolas Jeannerod Journ´eesPPS October 12, 2017 18 / 21 Tree constraints Existential and first order constraints Negation: new players, new rules

¬xF : there exist a g∈ / F such that xg ↓; . x 6∼F y: there exist a g∈ / F such that x 6=g y;

Repl-NKind ¬K(x) _ L(x) L∈K

Repl-NAbs Repl-NSim-NFence ¬xf ↑ xF ∧ x 6∼G y F ⊆ G ∃z.xfz xF ∧ ¬xG

Nicolas Jeannerod Journ´eesPPS October 12, 2017 18 / 21 Tree constraints Existential and first order constraints Negation: new players, new rules

¬xF : there exist a g∈ / F such that xg ↓; . x 6∼F y: there exist a g∈ / F such that x 6=g y;

Repl-NKind ¬K(x) _ L(x) L∈K

Repl-NAbs Repl-NSim-NFence ¬xf ↑ xF ∧ x 6∼G y F ⊆ G ∃z.xfz xF ∧ ¬xG

Nicolas Jeannerod Journ´eesPPS October 12, 2017 18 / 21 Tree constraints Existential and first order constraints Quantifier elimination

Goal: be able to change an existentially quantified block into a universally quantified one.  ^   _ ^  ∃X.~ ... ↔ ∀Y.~ ...

Special rules:

Enlarg-Feat-Local ∃x.∃X.~ (yfx ∧ φ(x, X~ )) yf ↓ ∧∀x.∃X.~ (yfx → φ(x, X~ ))

Nicolas Jeannerod Journ´eesPPS October 12, 2017 19 / 21 Tree constraints Existential and first order constraints Quantifier elimination

Goal: be able to change an existentially quantified block into a universally quantified one.  ^   _ ^  ∃X.~ ... ↔ ∀Y.~ ...

Special rules:

Enlarg-Feat-Local ∃x.∃X.~ (yfx ∧ φ(x, X~ )) yf ↓ ∧∀x.∃X.~ (yfx → φ(x, X~ ))

Nicolas Jeannerod Journ´eesPPS October 12, 2017 19 / 21 Tree constraints Existential and first order constraints Lemma of 31 August

Lemma (31 August) Let φ be a conjunction of the form: ^  φ(X,~ Y~ ) = stuff about X~ ∧ ψ(Y~ )

in normal form for our system. Then we have:   |= ∀Y.~ ∃X.~ φ(X,~ Y~ ) ↔ ψ(Y~ )

The system propagates all the useful information We can just remove what we don’t need!

Nicolas Jeannerod Journ´eesPPS October 12, 2017 20 / 21 Tree constraints Existential and first order constraints Lemma of 31 August

Lemma (31 August) Let φ be a conjunction of the form: ^  φ(X,~ Y~ ) = stuff about X~ ∧ ψ(Y~ )

in normal form for our system. Then we have:   |= ∀Y.~ ∃X.~ φ(X,~ Y~ ) ↔ ψ(Y~ )

The system propagates all the useful information We can just remove what we don’t need!

Nicolas Jeannerod Journ´eesPPS October 12, 2017 20 / 21 Thank you for your attention!

Recap’: Need constraints on graphs to represent relations on file systems;

Extend “feature trees” with x ∼F y (“x and y are the same, except maybe for the features in F ”); Use a system of rewrite rules whose normal forms have nice properties.

Future work: Cleanup, formalise in a technical report; Add inodes, permissions, timestamps, etc. Implement an efficient version for the existential subset.

Nicolas Jeannerod Journ´eesPPS October 12, 2017 21 / 21