You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Section 1 | contribution: a map of languages ||[src/Vatras/Translation/LanguageMap.lagda.md](src/Vatras/Translation/LanguageMap.lagda.md)||
293
293
| Section 2 | running example ||[src/Vatras/Test/Experiments/RoundTrip.agda](src/Vatras/Test/Experiments/RoundTrip.agda)||
294
294
| Table 1 |||[src/Vatras/Lang/All.agda](src/Vatras/Lang/All.agda)| This file only reexports the language definitions. Use the go-to-definition functionality of your editor for easy exploration. |
@@ -305,10 +305,10 @@ The following table shows where each of the definitions, theorems, and proofs fr
305
305
|| Equivalence ≅ |`_≅_`, `_≅[_][_]`_|[src/Vatras/Data/IndexedSet.lagda.md](src/Vatras/Data/IndexedSet.lagda.md)| The difference between `_≅_` and `_≅[_][_]_` is the same as between `_⊆_` and `_⊆[_]_`. |
306
306
| Corollary 4.5 | ⊑ is a partial order |`⊆-IsIndexedPartialOrder`, `⊆[]-refl`, `⊆[]-antisym`, `⊆[]-trans`|[src/Vatras/Data/IndexedSet.lagda.md](src/Vatras/Data/IndexedSet.lagda.md)||
307
307
|| ≅ is an equivalence relation |`≅-IsIndexedEquivalence`, `≅[]-refl`, `≅[]-sym`, `≅[]-trans`|[src/Vatras/Data/IndexedSet.lagda.md](src/Vatras/Data/IndexedSet.lagda.md)||
308
-
| Definition 4.6 | Finite Indexed Set ||| We actually only need finite and non-empty indexed sets and do not define finite indexed sets separately. |
308
+
| Definition 4.6 | Finite Indexed Set ||| We actually only need finite and non-empty indexed sets and do not define finite indexed sets separately. |
309
309
| Definition 4.8 | Non-empty Indexed Set |`empty`|[src/Vatras/Data/IndexedSet.lagda.md](src/Vatras/Data/IndexedSet.lagda.md)| The library definition is a predicate that ensures an indexed set to be non-empty. |
310
-
| Definition 4.9 | Variant Generator |`VariantGenerator`|[src/Vatras/Framework/VariantGenerator.agda](src/Vatras/Framework/VariantGenerator.agda)| This is the finite and non-empty indexed set definition mentioned above. |
311
-
| Definition 4.10 | Semantic Domain |`VariantGenerator`|[src/Vatras/Framework/VariantGenerator.agda](src/Vatras/Framework/VariantGenerator.agda)| In contrast to a variant map, the semantic domain is the type of variant maps instead of its elements.|
310
+
| Definition 4.9 | Variant Generator |`VariantGenerator`|[src/Vatras/Framework/VariantGenerator.agda](src/Vatras/Framework/VariantGenerator.agda)| This is the finite and non-empty indexed set definition mentioned above. |
311
+
| Definition 4.10 | Semantic Domain |`VariantGenerator`|[src/Vatras/Framework/VariantGenerator.agda](src/Vatras/Framework/VariantGenerator.agda)| In contrast to a variant generator, the semantic domain is the type of variant generators instead of its elements. |
312
312
| Definition 4.11 | configuration language 𝐶 |`ℂ`|[src/Vatras/Framework/Definitions.agda](src/Vatras/Framework/Definitions.agda)||
313
313
| Definition 4.12 | variability language 𝐿 |`𝔼`|[src/Vatras/Framework/Definitions.agda](src/Vatras/Framework/Definitions.agda)||
| Corollary 4.18 | ⪰ is a partial order |`≽-IsPartialOrder`|[src/Vatras/Framework/Relation/Expressiveness.lagda.md](src/Vatras/Framework/Relation/Expressiveness.lagda.md)||
322
322
|| ≡ is an equivalence relation |`≋-IsEquivalence`|[src/Vatras/Framework/Relation/Expressiveness.lagda.md](src/Vatras/Framework/Relation/Expressiveness.lagda.md)||
323
-
| Definition 4.19 | 𝑀 ⇾ 𝐿 ||| We only model correct compilers. |
323
+
| Definition 4.19 | 𝑀 ⇾ 𝐿 ||| We only model correct compilers. |
Copy file name to clipboardExpand all lines: src/Vatras/Framework/Proof/ForFree.lagda.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,11 +26,11 @@ The intuition is that `M` can express everything `L` can express which in turn i
26
26
Thus also `M` is complete.
27
27
28
28
**Proof Sketch:**
29
-
Let V be an arbitrary variant map.
29
+
Let V be an arbitrary variant generator.
30
30
Since L is complete, there exists an expression l ∈ L that describes V.
31
31
By assumption, M is as expressive as L.
32
32
Thus, there exists an expression m ∈ M that also describes V.
33
-
Since V was picked arbitrarily, M can encode any variant map.
33
+
Since V was picked arbitrarily, M can encode any variant generator.
34
34
Thus, M is complete.
35
35
36
36
Dual theorem to: soundness-by-expressiveness.
@@ -78,7 +78,7 @@ soundness-by-expressiveness L-sound M-to-L m with M-to-L m
78
78
{-|
79
79
A language L is unsound if it is at least as expressive as another unsound language M.
80
80
The intuition is that there are expressions in M that describe something else
81
-
than a variant map.
81
+
than a variant generator.
82
82
Since L is at least as expressive as M, L can also express these other things.
83
83
Hence, L cannot be sound as well.
84
84
@@ -96,8 +96,8 @@ We can conclude that any complete language is at least as expressive as any othe
96
96
97
97
**Proof sketch:**
98
98
Given an arbitrary expression eˢ of our target language Lˢ, we have to show that there exists an expression e₊ in our complete language Lᶜ that is variant-equivalent to eˢ.
99
-
By soundness of Lˢ we can compute the variant map of eˢ.
100
-
By completeness of Lᶜ, we can encode any variant map as an expression eᶜ ∈ Lᶜ.
99
+
By soundness of Lˢ we can compute the variant generator of eˢ.
100
+
By completeness of Lᶜ, we can encode any variant generator as an expression eᶜ ∈ Lᶜ.
Copy file name to clipboardExpand all lines: src/Vatras/Framework/Relation/Expressiveness.lagda.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ as well as a range of related relations `_≻_`, `_⋡_`, and proves relevant pr
23
23
We also show that compilers for variability languages can be used as proofs
24
24
of expressiveness and vice versa (because Agda uses constructive logic).
25
25
26
-
We say that a language `L₁` is as expressive as another language `L₂` if for any expression `e₂` in `L₂`, there exists an expression `e₁` in `L₁` that describes the same variant map.
26
+
We say that a language `L₁` is as expressive as another language `L₂` if for any expression `e₂` in `L₂`, there exists an expression `e₁` in `L₁` that describes the same variant generator.
27
27
```agda
28
28
{-|
29
29
Our central expressiveness relation.
@@ -138,7 +138,7 @@ We now prove that:
138
138
```agda
139
139
{-|
140
140
A translation of expressions preserves semantics if
141
-
the translated expression denotes the same variant map as the initial expression.
141
+
the translated expression denotes the same variant generator as the initial expression.
142
142
-}
143
143
SemanticsPreserving : ∀ (L M : VariabilityLanguage V) → Expression L ⇒ₚ Expression M → Set₁
144
144
SemanticsPreserving L M t = ∀ {A} (e : Expression L A) → L , M ⊢ e ≣ t e
0 commit comments